Keras model.predict() 为测试输入中的所有值返回相同的预测输出
Posted
技术标签:
【中文标题】Keras model.predict() 为测试输入中的所有值返回相同的预测输出【英文标题】:Keras model.predict() returning same prediction output for all values in test inputs 【发布时间】:2018-10-31 05:00:19 【问题描述】:我正在使用 Keras 构建神经网络,模型编译成功,并且我已经对数据进行了归一化。
但是,当我使用 model.predict(xtest) 时,每个预测输出都会得到相同的值
def model_final():
model = models.Sequential()
model.add(layers.Dense(64, activation='relu',
input_shape=(xtrain.shape[1],),
kernel_regularizer = regularizers.l2(0.001)))
model.add(layers.Dense(64, activation='relu',
kernel_regularizer = regularizers.l2(0.001)))
model.add(layers.Dense(1))
model.compile(optimizer='rmsprop', loss='mse', metrics=['mae'])
return model
model = model_final()
model_final = model.fit(xtrain, ytrain, epochs = 100, batch_size = 10, verbose = 0)
model_final_eval = model.evaluate(xtest, ytest)
我得到以下均方误差和 mae:
214/214 [==============================] - 3s 14ms/step
[1.9285373412534785e-06, 0.00061284683733987052]
然后,当我使用model.predict(xtest)
时,我得到以下输出:
array([[ 0.0014801],
[ 0.0014801],
[ 0.0014801],...
对于model.predict
中的所有值。
我假设数据集中所有值的完全相同的预测值不可能是正确的。
建议?
谢谢!
【问题讨论】:
你确定输入的都不一样吗? 您的数据是否针对该值加权,即您的测试数据是否主要包含 0 值和少量非零值,即使对数据进行归一化也不会减少对抽样的偏差。例如如果你有 100k 个数据点,其中 99k 是 0 和 1k 是非零的,你可以通过预测 0 来达到 99% 的准确率 @Kalyan - 是的,所有输入都不同 @ExpiredData - 实际上没有零值,因为我估算了缺失值。它是一个相对较小的数据集(总共大约 900 条记录)。 检查它是否与训练过的模型相同。即使我有同样的问题。在我的 model.py 文件中,我在训练和预测我使用 relu 作为激活时进行了 elu 激活,这导致了这种现象的发生。因此,在预测时检查所有层是否与训练模型层匹配。 【参考方案1】:model
未经训练,您应该使用model_final.predict(...)
您是否在同一个脚本上调用predict
?如果没有,您可能需要加载砝码。
【讨论】:
model_final 是模型历史,而不是经过训练的模型。不是吗?以上是关于Keras model.predict() 为测试输入中的所有值返回相同的预测输出的主要内容,如果未能解决你的问题,请参考以下文章
Keras:model.evaluate vs model.predict 多类 NLP 任务中的准确率差异
keras 中 model.predict() 和 model.predict_generator() 之间的预测差异
Keras model.evaluate() 和 model.predict() 有啥区别?
model.predict(keras)输出中的类的顺序是啥?