5

我的输入是一个 200 dims 向量,它是由一篇文章的所有单词的 word2vector 生成的,我的输出是一个 50 dims 向量,它是由一篇文章的 LDA 结果生成的我想使用 mse 作为损失函数,但损失的值始终为 0 我的代码如下:

<pre>model = Sequential()
model.add(Dense(cols*footsize, 400,init = "glorot_uniform"))
# model.add(LeakyReLU(alpha = 0.3))
model.add(Activation('relu'))
model.add(Dropout(0.2))
model.add(Dense(400, 400,init = "glorot_uniform"))
model.add(Activation('relu'))
model.add(Dropout(0.2))
model.add(Dense(400, 50,init = "glorot_uniform"))
model.add(Activation('softmax'))
model.compile(loss='mse', optimizer='rmsprop')</pre>

屏幕输出如下: 在此处输入图像描述

谁能告诉我为什么,谢谢!

4

1 回答 1

4

首先,您的输出是预测类的单热向量吗?IE:第一类是 [1, 0, 0, ...],第二类是 [0, 1, 0, 0, ...]。

如果是这样,那么在输出层使用 softmax 激活是可以接受的,并且您正在处理分类问题。如果您正在处理分类问题(单热输出),则不能使用 MSE 作为损失,请使用分类交叉熵。

Softmax 缩放输出,使得给定的数字是某个类别的预测概率。维基百科在这里:https ://en.wikipedia.org/wiki/Softmax_function

如果您期望输出向量是实数,那么您需要在输出神经元上使用线性激活。

于 2015-08-28T13:21:38.377 回答