【发布时间】: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 激活,这导致了这种现象的发生。因此,在预测时检查所有层是否与训练模型层匹配。
标签: python neural-network keras keras-layer