首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Keras VAE示例损失函数

Keras VAE示例损失函数
EN

Data Science用户
提问于 2018-04-23 21:43:19
回答 2查看 2.1K关注 0票数 1

这里的代码:

https://github.com/keras-team/keras/blob/master/examples/variational_autoencoder.py

具体而言,第53行:

xent_loss = original_dim * metrics.binary_crossentropy(x, x_decoded_mean)

为什么交叉熵乘以original_dim?另外,这个函数是否只计算批处理维度的交叉熵(我注意到没有axis输入)?很难从文件中看出..。

EN

回答 2

Data Science用户

回答已采纳

发布于 2018-04-24 02:05:40

Keras metrics.binary_crossentropy计算所有输入的交叉熵平均值(伪码):

代码语言:javascript
复制
original_dim = 3 
x = [1,1,0]
x_decoded = [0.2393,0.7484,-1.1399]

average_BCE = binary_crossentropy(x, x_decoded)
print(average_BCE)
>>>0.1186

对于自动编码器丢失的这一部分,我们需要和,而不是输入和输出像素之间所有平方差的平均值,这相当于average_crossentropy_of_pixels * num_pixels (original_dim)。

代码语言:javascript
复制
print(original_dim * average_BCE)
>>>0.3559

另一种编写这一部分的方法是(我认为这更能说明正在发生的事情,但在Keras land中可能没有那么好的表现):

代码语言:javascript
复制
xent_loss = K.sum(K.square(x - sigmoid(x_decoded)))
print(xent_loss)
>>>0.3559

关于第二部分,因为第一个操作是减法,这意味着输入和输出的张量是相同的。如果您检查实现代码(这比本例中的文档更好),可以找到这一点,请转到第3056行:https://github.com/keras-team/keras/blob/master/keras/backend/tensorflow_backend.py

票数 1
EN

Data Science用户

发布于 2018-04-24 16:20:27

代码语言:javascript
复制
# Do Keras' binary cross entropy
x = Input(shape=(3,))
x_decoded = Input(shape=(3,))  
bce = metrics.binary_crossentropy(x,x_decoded)
sess = K.get_session()
with sess.as_default():
    print(bce.eval(feed_dict={x: np.array([[1,1,0]]),
                              x_decoded: np.array([[0.2393,0.7484,-1.1399]])}))

# Do the same thing in numpy directly
epsilon = 1e-7
x = np.array([1,1,0]) 
x_decoded = np.array([0.2393,0.7484,-1.1399])

output = np.clip(x_decoded, epsilon, 1-epsilon)
output = -x * np.log(output) - (1 - x) * np.log(1 - output)
print(np.mean(output, axis=-1))

输出:

代码语言:javascript
复制
[0.57328504]
0.5732850228833389

所以问题是mean。应该是sum。此外,我猜他们用epsilon做了一些事情,以防止奇怪的边缘情况,可能会使它爆炸。

票数 0
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/30716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档