【发布时间】:2017-09-24 06:44:01
【问题描述】:
我是 Keras 框架的新手,我想实现以下损失函数 Root Mean Squared Logarithmic Error
这是我的带有 tensorflow 后端的 Keras 代码
def loss_function(y_true, y_pred):
ones = K.ones(shape=K.shape(y_pred).shape)
y_pred = tf.add(y_pred,ones)
y_true = tf.add(y_true,ones)
val = K.sqrt(K.mean(K.sum(K.log(y_pred)-K.log(y_true))))
return val
但我最终得到以下错误:
ValueError: Error when checking input: expected dense_1_input to have shape (None, 16) but got array with shape (1312779, 11)
val 返回为 0。
【问题讨论】:
-
什么是网络代码(特别是输入层)?你的数据是什么形状的?他们匹配吗?您的每个数据点是否有 11 个属性宽且 input_shape=(16,) 而不是 (11) ?
-
这个错误与你的损失函数无关。它与您的输入数据(训练数据)有关。您的输入数据的形状
(1312779,11)无法进入您的模型,该模型需要像(anything, 16)这样的形状。 -
谢谢@DanielMöller 我进行了更改以匹配模型输入中数据的维度。但是我在每个时期都会损失 0.0000e+00。我对损失函数的实现是否正确?如果不是,我该如何实施?
标签: python-2.7 machine-learning tensorflow keras