Tensorflow 示例中的损失函数变分自动编码器
Loss function variational Autoencoder in Tensorflow example
我对变分自动编码器中的损失函数有疑问。我按照 tensorflow 示例 https://www.tensorflow.org/tutorials/generative/cvae 创建了一个 LSTM-VAE,用于对正弦函数进行采样。
我的编码器输入是特定范围(随机采样)的一组点 (x_i,sin(x_i)),作为解码器的输出,我希望得到相似的值。
在tensorflow指南中,有交叉熵用于比较编码器输入和解码器输出。
cross_ent = tf.nn.sigmoid_cross_entropy_with_logits(logits=x_logit, labels=x)
这是有道理的,因为输入和输出被视为概率。但实际上这些概率函数代表了我的正弦函数集。
我不能简单地使用均方误差而不是交叉熵(我试过了并且效果很好)或者在某些时候导致架构的错误行为吗?
致以最诚挚的问候,感谢您的帮助!
好吧,当你工作太多而停止思考时,就会出现这样的问题。为了解决这个问题,考虑一下我正在尝试做的事情是有意义的。
p(x|z) 是解码器重构,这意味着通过从 z 采样,值 x 以 p 的概率生成。在 tensorflow-example image-classification/generation 中使用,在这种情况下交叉熵是有意义的。我只是想最小化输入和输出之间的距离。 mse 的使用是合乎逻辑的。
希望对某些人有所帮助。
此致。
我对变分自动编码器中的损失函数有疑问。我按照 tensorflow 示例 https://www.tensorflow.org/tutorials/generative/cvae 创建了一个 LSTM-VAE,用于对正弦函数进行采样。
我的编码器输入是特定范围(随机采样)的一组点 (x_i,sin(x_i)),作为解码器的输出,我希望得到相似的值。
在tensorflow指南中,有交叉熵用于比较编码器输入和解码器输出。
cross_ent = tf.nn.sigmoid_cross_entropy_with_logits(logits=x_logit, labels=x)
这是有道理的,因为输入和输出被视为概率。但实际上这些概率函数代表了我的正弦函数集。
我不能简单地使用均方误差而不是交叉熵(我试过了并且效果很好)或者在某些时候导致架构的错误行为吗?
致以最诚挚的问候,感谢您的帮助!
好吧,当你工作太多而停止思考时,就会出现这样的问题。为了解决这个问题,考虑一下我正在尝试做的事情是有意义的。
p(x|z) 是解码器重构,这意味着通过从 z 采样,值 x 以 p 的概率生成。在 tensorflow-example image-classification/generation 中使用,在这种情况下交叉熵是有意义的。我只是想最小化输入和输出之间的距离。 mse 的使用是合乎逻辑的。
希望对某些人有所帮助。
此致。