亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么我從神經網絡得到水平線(幾乎為零)而不是所需的曲線?

為什么我從神經網絡得到水平線(幾乎為零)而不是所需的曲線?

jeck貓 2023-06-20 15:58:49
我正在嘗試將神經網絡用于 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 modelestimator = 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),但沒有成功!非常感謝你的幫助
查看完整描述

2 回答

?
哈士奇WWW

TA貢獻1799條經驗 獲得超6個贊

首先糾正你的語法,同時在模型中添加密集層,刪除雙等號==和單等號=,如下kernal_initilizer所示

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

然后為了讓性能更好做followong

  1. 增加隱藏層中隱藏神經元的數量

  2. 增加隱藏層的數量。

如果您仍然遇到同樣的問題,請嘗試更改優化器和激活函數。調整超參數可以幫助您收斂到解決方案

編輯 1

您還必須像下面這樣在交叉驗證后安裝估算器

estimator.fit(X_train, y_train)

然后你可以測試測試數據如下

prediction = estimator.predict(X_test)
from sklearn.metrics import accuracy_score
accuracy_score(Y_test, prediction)


查看完整回答
反對 回復 2023-06-20
?
Helenr

TA貢獻1780條經驗 獲得超4個贊

這可能是由于數據增強或超參數。您可以調整超參數,例如學習率和迭代次數。減少紀元數。有時,數據擴充也會導致這種情況。

MSE 有利于回歸。您也可以嘗試 Huber 損失。

from?tensorflow.keras.losses?import?Huber
tf.keras.losses.Huber
model.compile(loss=Huber(delta=0.01),metrics=['mse'],?optimizer='adam')


查看完整回答
反對 回復 2023-06-20
  • 2 回答
  • 0 關注
  • 204 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號