如何解决为什么从神经网络获取水平线几乎为零而不是所需的曲线?
我正在尝试将神经网络用于python中的回归问题,但神经网络的输出是一条为零的直线。我只有一个输入,显然还有一个输出。 这是我的代码:
def baseline_model():
# create model
model = Sequential()
model.add(Dense(1,input_dim=1,kernel_initializer='normal',activation='relu'))
model.add(Dense(4,activation='relu'))
model.add(Dense(1,kernel_initializer='normal'))
# Compile model
model.compile(loss='mean_squared_error',metrics=['mse'],optimizer='adam')
model.summary()
return model
# evaluate model
estimator = KerasRegressor(build_fn=baseline_model,epochs=50,batch_size=64,validation_split = 0.2,verbose=1)
kfold = KFold(n_splits=10)
results = cross_val_score(estimator,X_train,y_train,cv=kfold)
这是训练和测试数据的NN预测与目标的关系图。
我也尝试过不同的重量初始值设定项(Xavier和He),但是没有运气! 非常感谢您的帮助
解决方法
首先在模型中添加密集层的同时更正语法,如下所示删除带有==
的单等号=
的双等号kernal_initilizer
model.add(Dense(1,input_dim=1,kernel_initializer ='normal',activation='relu'))
然后使性能更好地完成后续操作
-
增加隐藏层中隐藏神经元的数量
-
增加隐藏层的数量。
如果仍然有相同的问题,请尝试更改优化器和激活功能。调整超参数可以帮助您收敛到解决方案
编辑1
在进行如下所示的交叉验证后,您还必须拟合估算器
estimator.fit(X_train,y_train)
然后您可以按照以下步骤对测试数据进行测试
prediction = estimator.predict(X_test)
from sklearn.metrics import accuracy_score
accuracy_score(Y_test,prediction)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。