如何在 Keras 模型的自定义丢失中访问 Tensor 的内容
How can I access to content of Tensor in custom loss of Keras model
我正在使用 Keras 模型构建自动编码器。我想以 alpha* L2(x, x_pred) + beta * L1(day_x, day_x_pred)
的形式构建自定义损失。 L1 损失的第二项关于时间的惩罚(day_x 是天数)。这一天是我输入数据中的第一个特征。
我的输入数据的格式是 ['day', 'beta', 'sigma', 'gamma', 'mu']
.
输入 x 的形状为(batch_size,特征数量),我有 5 个特征。
所以我的问题是如何从 x and x_pred
中提取第一个特征来计算 L1(t_x, t_x_pred)
。
这是我当前的损失函数:
def loss_function(x, x_predicted):
#with tf.compat.v1.Session() as sess: print(x.eval())
return 0.7 * K.square(x- x_predicted) + 0.3 * K.abs(x[:,1]-x_predicted[:,1])
但这对我不起作用。
这就是你需要的损失...
你必须计算错误的均值
def loss_function(x, x_predicted):
get_day_true = x[:,0] # get day column
get_day_pred = x_predicted[:,0] # get day column
day_loss = K.mean(K.abs(get_day_true - get_day_pred))
all_loss = K.mean(K.square(x - x_predicted))
return 0.7 * all_loss + 0.3 * day_loss
否则,你必须插入一个维度
def loss_function(x, x_predicted):
get_day_true = x[:,0] # get day column
get_day_pred = x_predicted[:,0] # get day column
day_loss = K.abs(get_day_true - get_day_pred)
all_loss = K.square(x - x_predicted)
return 0.7 * all_loss + 0.3 * tf.expand_dims(day_loss, axis=-1)
编译模型时使用损失
model.compile('adam', loss=loss_function)
我正在使用 Keras 模型构建自动编码器。我想以 alpha* L2(x, x_pred) + beta * L1(day_x, day_x_pred)
的形式构建自定义损失。 L1 损失的第二项关于时间的惩罚(day_x 是天数)。这一天是我输入数据中的第一个特征。
我的输入数据的格式是 ['day', 'beta', 'sigma', 'gamma', 'mu']
.
输入 x 的形状为(batch_size,特征数量),我有 5 个特征。
所以我的问题是如何从 x and x_pred
中提取第一个特征来计算 L1(t_x, t_x_pred)
。
这是我当前的损失函数:
def loss_function(x, x_predicted):
#with tf.compat.v1.Session() as sess: print(x.eval())
return 0.7 * K.square(x- x_predicted) + 0.3 * K.abs(x[:,1]-x_predicted[:,1])
但这对我不起作用。
这就是你需要的损失...
你必须计算错误的均值
def loss_function(x, x_predicted):
get_day_true = x[:,0] # get day column
get_day_pred = x_predicted[:,0] # get day column
day_loss = K.mean(K.abs(get_day_true - get_day_pred))
all_loss = K.mean(K.square(x - x_predicted))
return 0.7 * all_loss + 0.3 * day_loss
否则,你必须插入一个维度
def loss_function(x, x_predicted):
get_day_true = x[:,0] # get day column
get_day_pred = x_predicted[:,0] # get day column
day_loss = K.abs(get_day_true - get_day_pred)
all_loss = K.square(x - x_predicted)
return 0.7 * all_loss + 0.3 * tf.expand_dims(day_loss, axis=-1)
编译模型时使用损失
model.compile('adam', loss=loss_function)