[英]Porting loss function written in Tensorflow to Keras results in AttributeError
我已经写在tensorflow它得到3个值的损失函数y_in
在和3个值y_pred
。
张量流损失的伪代码:
def my_loss(y_in,y_pred):
with tf.name_scope('loss_scope'):
loss1 = tf.reduce_mean(...)
loss2 = tf.reduce_mean(...)
loss3 = tf.reduce_mean(...)
return loss1,loss2,loss3
现在,我想在我的keras模型中使用此损失,我将以这种方式简单地尝试一下:
...
out = Dense(3,activation='linear')(con_res)
model = Model(inputs=[In1,In2],output = out)
model.compile(optimizer='rmsprop',loss=my_loss)
其中con_res是之前网络的结果。 然后在“密集-层”的帮助下,它将减少为3个输出。
发生以下错误:
文件“ /usr/local/lib/python2.7/dist-packages/keras/engine/training.py”,第910行,编译sample_weight,掩码)
文件“ /usr/local/lib/python2.7/dist-packages/keras/engine/training.py”,行447,加权ndim = K.ndim(score_array)
文件“ /usr/local/lib/python2.7/dist-packages/keras/backend/tensorflow_backend.py”,第479行,以ndim dims = x.get_shape()._ dims
AttributeError:“元组”对象没有属性“ get_shape”
所示的追溯发生在.compile
函数之后。
我尝试了交叉熵损失,但没有抛出任何错误
您的函数my_loss()
应该返回张量。 不是元组。
您可以使用tf.stack()
将三个张量(loss1,loss2,loss3)
为一个张量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.