gpt4 book ai didi

python - 将 Tensorflow 编写的损失函数移植到 Keras 会导致 AttributeError

转载 作者:行者123 更新时间:2023-12-01 02:58:53 24 4
gpt4 key购买 nike

我有一个用tensorflow编写的损失函数,它在y_in中获取3个值,在y_pred中获取3个值。

tensorflow 损失的伪代码:

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 个输出。

出现以下错误:

File "/usr/local/lib/python2.7/dist-packages/keras/engine/training.py", line 910, in compile sample_weight, mask)

File "/usr/local/lib/python2.7/dist-packages/keras/engine/training.py", line 447, in weighted ndim = K.ndim(score_array)

File "/usr/local/lib/python2.7/dist-packages/keras/backend/tensorflow_backend.py", line 479, in ndim dims = x.get_shape()._dims

AttributeError: 'tuple' object has no attribute 'get_shape'

显示的回溯发生在 .compile 函数之后。

我尝试了交叉熵损失,它没有抛出任何错误

最佳答案

您的函数 my_loss() 应返回一个张量。不是元组。

您可以使用以下命令将三个张量(loss1,loss2,loss3)堆叠成一个张量tf.stack().

关于python - 将 Tensorflow 编写的损失函数移植到 Keras 会导致 AttributeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44003302/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com