在Tensorflow.keras 2.0中,当一个模型有多个输出时,如何为model.fit()定义一个灵活的损失函数?

比方说,这是一个具有两个输出的模型。

import tensorflow as tf
import numpy as np 

x = tf.keras.Input(shape=(35,7),dtype=tf.float32)     # (None,35,7)
net = tf.keras.layers.Dense(11,activation='relu')(x)   # (None,11)
net = tf.reduce_max(net,axis=1,name='maxpool')        # (None,11)

a = tf.keras.layers.Dense(13,activation='relu')(net)   # (None,11)
b = tf.keras.layers.Dense(17,11)
model = tf.keras.Model(inputs=x,outputs=[a,b])

当我执行model.compile(loss=loss_fn,optimizer='sgd')时:
model.fit(x=train,y=(label1,label2))为每对输出和标签(即loss_fnloss_fn(a,l1))运行loss_fn(b,l1)

当我执行model.compile(loss=[loss_fn1,loss_fn2],label2))loss_fn1运行a,为loss_fn2运行b(即{ {1}}和loss_fn1(a,l1))。

因此,基本上,它似乎可以单独处理输出(与给定的对应标签配对)。

如果我必须定义一个损失函数,该函数应该一起处理/考虑两个输出,并将该函数与loss_fn2(b,l1)一起使用?

(我想到的一件事是将输出连接到一个张量中,并用损失函数将它们分开。但是,我不想去那里,因为两个输出的形状可能不一致。 ,例如,类似...)

model.fit
chen_004488 回答:在Tensorflow.keras 2.0中,当一个模型有多个输出时,如何为model.fit()定义一个灵活的损失函数?

您将连接两个密集层,并执行与您提到的完全相同的操作:

exit code -1073740791 (0xC0000409)

编辑;尚未看到@ bit01实际已经评论了要使用的方法

本文链接:https://www.f2er.com/3160903.html

大家都在问