我正在微调一个keras模型,该模型为3个子任务输出3个不同的预测。
out = [[batch_size,5],[batch_size,6],[batch_size,6]]
我只想计算第三个输出的分类交叉熵损失,所以我定义了一个简单的自定义函数:
def my_loss_fn(y_true, y_pred):
out = y_pred[-1]
return tf.keras.losses.CategoricalCrossentropy()(y_true, out)
然而,tensorflow却抱怨ValueError: Shapes (96, 6) and (5,) are incompatible
。y_pred[-1]
似乎只返回模型第一个输出的最终索引中的元素。
如何忽略第一个输出建模,而只考虑最后一个输出来计算损失?
1条答案
按热度按时间xzabzqsa1#
我们可以为多输出模型的每个输出定义损失函数。为此,使用模型的最后一层(输出层)的命名。实现这一点的方法之一是通过以下方式。
一些资源,这可能也会有帮助