比方说,这是一个具有两个输出的模型。
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_fn
和loss_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