小编jro*_*ock的帖子

使用 Keras 跟踪多个损失

对于像 VAE 这样具有竞争损失的网络,独立跟踪每个损失很有用。也就是说,查看总损失以及数据项和 KL 代码项很有用。

这在 Keras 中是可能的吗?可以使用 vae.losses 恢复损失,但它们是 tensorflow 层,因此不能在 keras 中使用(例如,无法创建计算 vae 损失作为输出的第二个模型)。

似乎这样做的一种方法是在编译时将它们添加到指标列表中,但它们不适合指标模型。

这是一些示例代码,抱歉篇幅过长,它稍微改编自 Keras 的示例代码。主要区别在于我已经明确地将 KL div 的计算移到了采样层,这比原始示例代码感觉更自然。

'''This script demonstrates how to build a variational autoencoder with Keras.

Reference: "Auto-Encoding Variational Bayes" https://arxiv.org/abs/1312.6114
'''    
from keras.layers import Input, Dense, Lambda, Layer
from keras.models import Model
from keras import backend as K
from keras import metrics

batch_size = 100
original_dim = 784
latent_dim = 2
intermediate_dim = 256
epochs = 50
epsilon_std = 1.0


x …
Run Code Online (Sandbox Code Playgroud)

keras

5
推荐指数
1
解决办法
1905
查看次数

标签 统计

keras ×1