我有一个多输出的模型,如下所示:
model_in = Input((None, None, 3))out_1 = Dense(10)(model_in)out_2 = Dense(20)(model_in)model = keras.Model(model_in, [out_1, out_2])model.compile('adam', loss = [loss_fn_1, loss_fn_2])
对于每个训练样本,我有一个掩码,这个掩码应该在我的自定义损失函数中使用(实际上,我的数据生成器根据输入样本生成这个掩码)。因此,对于每个样本,我有一个输入、两个输出和一个应该在损失函数中使用的掩码。我的问题是如何将掩码传递给相应的损失函数(我对每个输出使用不同的损失函数)?
回答:
你的损失函数有三个参数,因此无法与keras的compile()
、fit()
一起使用(https://keras.io/api/losses/)。
你有两个选择:
- 创建自定义循环,或
- 创建自定义层并使用
add_loss()
。