【发布时间】:2020-09-13 07:46:22
【问题描述】:
我正在使用 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])
但这对我不起作用。
【问题讨论】:
-
为什么不起作用?
-
当我取消注释 L1 部分时它不起作用,我认为我切片错误
-
您收到的错误是什么?
-
InvalidArgumentError:不兼容的形状:[50,5] vs. [50] [[node BroadcastGradientArgs_7]]
标签: python tensorflow keras autoencoder loss