我正在尝试一些自动编码器,并使用 tensorflow 创建了一个尝试重建 MNIST 数据集的模型。
我的网络非常简单:X, e1, e2, d1, Y,其中 e1 和 e2 是编码层,d2 和 Y 是解码层(Y 是重建的输出)。
X 有 784 个单位,e1 有 100,e2 有 50,d1 再次有 100,Y 再次有 784。
我使用 sigmoids 作为层 e1、e2、d1 和 Y 的激活函数。输入在 [0,1] 中,输出也应该是。
好吧,我尝试使用交叉熵作为损失函数,但输出总是一个 blob,我注意到从 X 到 e1 的权重总是会收敛到一个零值矩阵。
另一方面,使用均方误差作为损失函数,会产生一个不错的结果,我现在能够重建输入。
为什么呢?我以为我可以将这些值解释为概率,因此使用交叉熵,但显然我做错了什么。