Tensorflow 变分自动编码器中为什么使用交叉熵计算损耗

Tensorflow 变分自动编码器中为什么使用交叉熵计算损耗,tensorflow,machine-learning,Tensorflow,Machine Learning,我正在通过阅读学习变分自动编码器的原理和实现。 在文档中,它说优化以下函数:log{p(x|z)}+log{p(z)}-log{q(z|x)}。然而,在代码中,我无法理解为什么实现使用交叉熵来计算log{p(x | z)}。有人能给我解释一下交叉熵是如何与log{p(x | z)}联系在一起的吗 提前谢谢。好的,这不是我的专业,但是。在定义变分损失时,我们通常谈论KL散度。交叉熵是KL散度和一个分布熵的总和。如果该分布的熵不依赖于模型参数(即它是抽样的),那么我们可以使用CE而不是KL来产生损失

我正在通过阅读学习变分自动编码器的原理和实现。 在文档中,它说优化以下函数:log{p(x|z)}+log{p(z)}-log{q(z|x)}。然而,在代码中,我无法理解为什么实现使用交叉熵来计算log{p(x | z)}。有人能给我解释一下交叉熵是如何与log{p(x | z)}联系在一起的吗


提前谢谢。

好的,这不是我的专业,但是。在定义变分损失时,我们通常谈论KL散度。交叉熵是KL散度和一个分布熵的总和。如果该分布的熵不依赖于模型参数(即它是抽样的),那么我们可以使用CE而不是KL来产生损失。这些人只是留下了很多故事,因为他们专注于提供一个技术指南hi@y.selivonchyk,谢谢你的回答。当你说“如果该分布的熵不依赖于模型参数(即,它是采样的),那么我们可以使用CE而不是KL来产生损失”,这是因为使用CE,人们实际上可以计算梯度并进行反向传播吗?绝对可以。CE产生的数字输出可以用作损耗,并且可以最小化。如果CE的任何参数依赖于模型参数,而不是最小化该损失,那么我们可以为参数生成梯度。记住,这并不一定意味着培训的结果会有意义:如果发生VAE,必须再增加一些损失。好吧,这不是我的专业,而是我的专业。在定义变分损失时,我们通常谈论KL散度。交叉熵是KL散度和一个分布熵的总和。如果该分布的熵不依赖于模型参数(即它是抽样的),那么我们可以使用CE而不是KL来产生损失。这些人只是留下了很多故事,因为他们专注于提供一个技术指南hi@y.selivonchyk,谢谢你的回答。当你说“如果该分布的熵不依赖于模型参数(即,它是采样的),那么我们可以使用CE而不是KL来产生损失”,这是因为使用CE,人们实际上可以计算梯度并进行反向传播吗?绝对可以。CE产生的数字输出可以用作损耗,并且可以最小化。如果CE的任何参数依赖于模型参数,而不是最小化该损失,那么我们可以为参数生成梯度。请记住,这并不一定意味着此类培训的结果将是有意义的:在VAE的情况下,必须增加一些损失。