了解深度自动编码器中损耗和激活的选择吗?

问题描述 投票:0回答:1

我正在按照这个keras教程来使用MNIST数据集创建自动编码器。这是本教程:https://blog.keras.io/building-autoencoders-in-keras.html

但是,我对简单的单层自动编码器的激活和丢失选择感到困惑(这是链接中的第一个示例)。与sigmoid之类的东西相比,解码器部分使用了relu激活有特定的原因吗?我试图了解这是我可以选择的选择,还是应该确实是sigmoid,如果可以,为什么?同样,我了解到损失是通过逐像素比较原始位和预测位来实现的,但是我不确定为什么损失为binary_crossentropy而不是均方误差。

我希望澄清这一点,以帮助我前进!谢谢!

keras deep-learning autoencoder loss-function activation-function
1个回答
0
投票

MNIST图像通常在[0, 1]范围内归一化,因此自动编码器应在相同范围内输出图像,以便于学习。这就是在输出中使用sigmoid激活的原因。

均方误差损失具有非线性损失,较大的误差比较小的误差具有更大的损失,这通常导致收敛到解的平均值,而不是更精确的解。二元交叉熵没有这个问题,因此是优选的。之所以可以使用它,是因为模型的输出和标签在[0, 1]范围内,并且损失将应用于所有像素。

© www.soinside.com 2019 - 2024. All rights reserved.