当 keras 进行主题预测时,mse 的损失始终为 0
Posted
技术标签:
【中文标题】当 keras 进行主题预测时,mse 的损失始终为 0【英文标题】:the loss of mse always be 0 when keras for topic predict 【发布时间】:2015-11-17 17:45:11 【问题描述】:我的输入是一个 200 个维度的向量,它是由一篇文章的所有单词的 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>
屏幕输出如下:
谁能告诉我为什么,谢谢!
【问题讨论】:
【参考方案1】:首先,您的输出是预测类的单热向量吗? IE:第一类是 [1, 0, 0, ...],第二类是 [0, 1, 0, 0, ...]。
如果是这样,那么在输出层使用 softmax 激活是可以接受的,并且您正在处理分类问题。如果您正在处理分类问题(单热输出),则不能使用 MSE 作为损失,请使用分类交叉熵。
Softmax 缩放输出,使得给定的数字是某个类别的预测概率。***在这里:https://en.wikipedia.org/wiki/Softmax_function
如果您期望输出向量是实数,那么您需要在输出神经元上使用线性激活。
【讨论】:
以上是关于当 keras 进行主题预测时,mse 的损失始终为 0的主要内容,如果未能解决你的问题,请参考以下文章