将 keras 损失函数乘以常数

Aka*_*aba 4 keras tensorflow

是否可以用符号将内置 keras 损失函数乘以常数?例如,如果我想要两个输出损耗的线性组合。

我可以编写一个自定义损失函数,但它不会被编译,因为它是 python 代码,而不是符号 Keras 吗?我正在寻找一种在纯 Keras (或 TF)中做到这一点的方法

tia*_*iao 5

如果您的模型产生多个输出,您可以通过向模型方法的参数提供Keras 损失列表来为每个输出分配一个损失函数。例如,如果您的模型的形式为losscompile

model = Model(inputs=[input_a, input_b], outputs=[output_a, output_b])
Run Code Online (Sandbox Code Playgroud)

你可以像这样编译它:

model.compile(
    optimizer='rmsprop',
    loss=['binary_crossentropy', 'mean_squared_error'],
    loss_weights=[1., 0.2]
)
Run Code Online (Sandbox Code Playgroud)

这会将二元交叉熵损失分配给输出output_a,并将均方误差损失分配给output_b。最终最小化的损失将是这些损失的加权和,权重在 中指定loss_weights

或者,如果输出层已命名,您还可以使用以输出层名称作为键的字典来指定loss和。loss_weights这可能有助于消除将哪些损失和权重分配给哪些输出的歧义。

有关更多信息,请参阅https://keras.io/getting-started/function-api-guide/#multi-input-and-multi-output-models 。