【问题标题】:Regression Neural Network returning low range values for prediction回归神经网络返回低范围值进行预测
【发布时间】:2021-02-08 20:44:29
【问题描述】:

我正在尝试使用回归 nn 模型预测一个介于 3 到 7 之间的值。我目前有 1000 个样本,每个样本 1000 个点,对应于生理数据。但是,预测值始终在 5.6 到 5.9 的范围内。我试图改变层数,调整参数等。但它只改变了基础值,而不是范围(即预测,例如,在 6.6 到 6.9 的范围内)。

这是算法的基本核心(数据已经标准化):

X_train, X_test, y_train, y_test = train_test_split(x_0, y_0, test_size=0.2, shuffle = False, stratify = None)
K.clear_session()
model = Sequential()
model.add(Dense(128, activation='relu', input_shape=(1000,)))
#model.add(Dropout(0.2))
model.add(Dense(128,activation='relu'))
model.add(Dense(128,activation='relu'))
model.add(Dense(128,activation='relu'))
model.add(Dense(1,activation='linear'))
model.compile(loss="mean_absolute_error", optimizer=Adam(lr=0.001), metrics=['mean_absolute_error'])

model.summary()
history = model.fit(X_train,y_train,batch_size=30, epochs=10,verbose=1, validation_split=0.2)
score = model.evaluate(X_test,y_test)
print("Test score:", score)
y_pred = model.predict(X_test)

感谢您的帮助!

【问题讨论】:

    标签: python keras regression


    【解决方案1】:

    我猜你的输入是排序的,我可以看到你在train_test_split 中设置了shuffle=False。这意味着您的神经网络从未见过验证值。因此它不会在验证期间进行推断。设置shuffle=True 应该可以工作。

    【讨论】:

    • 我试过了,但不幸的是它不起作用,仍然在同一范围内。数据集是否太小?
    • 如果您的数据被打乱,NN 似乎不太可能预测相同的范围。除非你的样本很少
    猜你喜欢
    • 2016-12-20
    • 2015-07-05
    • 2019-01-27
    • 2013-05-28
    • 2018-09-19
    • 2021-09-13
    • 1970-01-01
    • 2020-03-27
    • 2018-10-15
    相关资源
    最近更新 更多