【发布时间】:2023-01-12 16:41:05
【问题描述】:
我有一个 keras 模型,其中每个样本包含 3 个标量和 2 个矩阵。其中一个矩阵是掩码。我需要看起来像 (Y_hat * mask - Y)^2 的均方损失函数,其中乘法是逐点的。每个样本都有自己的掩码。如何让这个掩码可用于损失函数?
【问题讨论】:
标签: tensorflow keras loss
我有一个 keras 模型,其中每个样本包含 3 个标量和 2 个矩阵。其中一个矩阵是掩码。我需要看起来像 (Y_hat * mask - Y)^2 的均方损失函数,其中乘法是逐点的。每个样本都有自己的掩码。如何让这个掩码可用于损失函数?
【问题讨论】:
标签: tensorflow keras loss
与其创建复杂的损失函数,不如在将掩码发送到损失函数之前将其应用于 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])
【讨论】: