为什么我从神经网络得到水平线(几乎为零)而不是所需的曲线?

我正在尝试将神经网络用于 python 中的回归问题,但神经网络的输出是一条水平直线,为零。我有一个输入,显然是一个输出。这是我的代码:


def baseline_model():

    # create model

    model = Sequential()

    model.add(Dense(1, input_dim=1, kernel_initializer='normal', activation='relu'))

    model.add(Dense(4, kernel_initializer='normal', 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)

我也尝试过不同的权重初始化器(Xavier 和 He),但没有成功!非常感谢你的帮助


jeck猫
浏览 162回答 2
2回答

哈士奇WWW

首先纠正你的语法,同时在模型中添加密集层,删除双等号==和单等号=,如下kernal_initilizer所示 model.add(Dense(1, input_dim=1, kernel_initializer ='normal', activation='relu'))然后为了让性能更好做followong增加隐藏层中隐藏神经元的数量增加隐藏层的数量。如果您仍然遇到同样的问题,请尝试更改优化器和激活函数。调整超参数可以帮助您收敛到解决方案编辑 1您还必须像下面这样在交叉验证后安装估算器estimator.fit(X_train, y_train)然后你可以测试测试数据如下prediction = estimator.predict(X_test) from sklearn.metrics import accuracy_score accuracy_score(Y_test, prediction)

Helenr

这可能是由于数据增强或超参数。您可以调整超参数,例如学习率和迭代次数。减少纪元数。有时,数据扩充也会导致这种情况。MSE 有利于回归。您也可以尝试 Huber 损失。from tensorflow.keras.losses import Huber tf.keras.losses.Huber model.compile(loss=Huber(delta=0.01),metrics=['mse'], optimizer='adam')
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python