python - 输出 Keras 中 add_loss 添加的多个损失
问题描述
我研究了变分自动编码器 (VAE) 演示的自定义损失层的 Keras 示例。在示例中它们只有一个损失层,而 VAE 的目标由两个不同的部分组成:重建和 KL-Divergence。但是,我想绘制/可视化这两个部分在训练期间如何演变,并将单个自定义损失分成两个损失层:
Keras 示例模型:
我的模型:
不幸的是,Keras 在我的多损失示例中只输出一个损失值,这可以在我的 Jupyter Notebook 示例中看到,我已经实现了这两种方法。有人知道如何获得由 增加的每个损失的值add_loss
吗?此外,Keras 如何计算单个损失值,给定多次add_loss
调用(均值/总和/...?)?
解决方案
我正在使用 Keras 的 2.2.4-tf 版本,上面的解决方案对我不起作用。这是我找到的解决方案(继续dumkar的示例):
reconstruction_loss = mse(K.flatten(inputs), K.flatten(outputs))
kl_loss = beta*K.mean(- 0.5 * 1/latent_dim * K.sum(1 + z_log_var - K.square(z_mean) - K.exp(z_log_var), axis=-1))
model.add_loss(reconstruction_loss)
model.add_loss(kl_loss)
model.add_metric(kl_loss, name='kl_loss', aggregation='mean')
model.add_metric(reconstruction_loss, name='mse_loss', aggregation='mean')
model.compile(optimizer='adam')
希望它会帮助你。
推荐阅读
- typescript - Typescript 枚举、接口和映射
- javascript - 在 Angular 4/5 component.ts 文件中使用“new Function()”方法
- css - 如何在css中绘制一个带有小圆头的扇区?
- vba - 删除两列 VBA 之间的重复项
- php - PHP base64 解码返回垃圾字符
- c++ - 派生类中的 constexpression,clang 与 rest
- javascript - Javascript改变所有东西的不透明度,但悬停的图像
- python - 将值分配给在函数外部初始化的变量时出现 UnboundLocalError
- javascript - 读取 PNG 图像文件的致命错误:IDAT:CRC 错误
- vb.net - 在没有.selectioncolor的情况下更改richtextbox文本颜色?