我有一个Keras模型,每个样本由3个标量和2个矩阵组成。其中一个矩阵是掩码。我需要看起来像(Y_hat * mask - Y)^2的均方损失函数,其中乘法是逐点的。每个样本都有自己的掩码。我如何使这个掩码对损失函数可用?
enxuqcxy1#
与其创建一个复杂的损失函数,不如先将掩码应用于Y_hat,然后再将其发送给损失函数。您仍然可以出于其他目的读取原始值。对于两个输入,您必须使用函数API:
# assuming mask is a binary array y_hat = f(scalars, matrix) y_hat_masked = y_hat * mask model = keras.Model(inputs=inputs, outputs = y_hat_masked, name="example")
如果还需要未掩蔽的输出,则只需使用多个输出,并仅对掩蔽的输出运行损失
model = keras.Model(inputs=..., outputs=[y_hat, y_hat_masked], name="example") model.compile(optimizer= ..., loss = [None, loss_fun])
1条答案
按热度按时间enxuqcxy1#
与其创建一个复杂的损失函数,不如先将掩码应用于Y_hat,然后再将其发送给损失函数。您仍然可以出于其他目的读取原始值。对于两个输入,您必须使用函数API:
如果还需要未掩蔽的输出,则只需使用多个输出,并仅对掩蔽的输出运行损失