当使用Keras进行主题预测时,均方误差(MSE)的损失始终为0。

5

我的输入是一个200维向量,它是由文章中所有单词的word2vector平均值生成的。 我的输出是一个50维向量,它是由文章的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>

屏幕输出如下所示:在此输入图片描述。有谁能告诉我为什么呢?谢谢!
1个回答

4
首先,您的输出是否是预测类别的独热向量?例如:类别一是[1, 0, 0,...],类别二是[0, 1, 0, 0,...]。
如果是这样的话,在输出层使用softmax激活是可以接受的,您正在解决分类问题。如果您正在解决分类问题(独热输出),则不能使用MSE作为损失函数,应该使用分类交叉熵。
Softmax会缩放输出,使得给出的数字是某个类别的预测概率。请参考维基百科:https://en.wikipedia.org/wiki/Softmax_function 如果您期望输出向量是实数,则需要在输出神经元上使用线性激活函数。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接