我有一个关于变分自动编码器中损失函数的问题。我遵循 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 示例中使用图像分类/生成,在这种情况下交叉熵有意义。我只是想最小化输入和输出之间的距离。 mse 的使用是合乎逻辑的。
希望能在某个时候对某人有所帮助。
问候。
关于tensorflow - Tensorflow 示例中的损失函数变分自动编码器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59424850/