当 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的主要内容,如果未能解决你的问题,请参考以下文章

keras中的加权mse自定义损失函数

keras中的加权mse自定义损失函数 - 自定义权重

Keras预测给出的误差与评估不同,损失与指标不同

tf.keras中度量和损失MSE之间的差异[重复]

在 TF2/Keras 中正确实现 Autoencoder MSE 损失函数

使用 Keras 进行异常检测 - 低预测率