有没有办法在keras中重用计算图的评估部分?

Is there a way to reuse an evaluated portion of the computation graph in keras?

我使用keras,我想在损失函数中结合ssim和其他一些函数(link)。

为了查看每个组件的值和效果,我也将每个组件定义为指标。但它会导致每个计算两次,一次在损失函数中,另一次在度量函数中。

有没有办法对每个分量计算一次并将它们的值用作度量和损失函数? 谢谢

尝试将您的网络定义为多输出模型,例如:

Model(inputs=your_input, outputs=[your_output, your_output, ...])

然后您可以为每个(相同的)输出定义不同的损失函数,如下所示:

model.compile(..., loss=[my_loss_1, my_loss_2, ...], loss_weights=[w1, w2, ...])

为了让它更好一点,您可以使用 "identity" lambda 层来定义单独的 named 输出层(并按名称设置损失)。

out_loss1 = Lambda(lambda x: x, name='loss1')(my_output)
out_loss2 = Lambda(lambda x: x, name='loss2')(my_output)
...
model.compile(..., loss={'loss1': my_loss_1, 'loss2': my_loss_2, ...}, loss_weights={'loss1':w1, 'loss2':w2, ...})

这样你的总损失是几个损失函数的组合,你得到每个损失的值,没有多余的计算。