#根據氣象資料和歷史徑流預測未來徑流
Streamflow=pd.read_csv('###.csv', delimiter=',')
x = Streamflow.drop('Q',axis=1)
Y = Streamflow['Q']
X = np.array(x)
y = np.array(Y)
test_size = int(len(X) * 0.15)
valid_size = int(len(X) * 0.15)
train_size= len(X) - (valid_size test_size)
y_train, y_valid, y_test = y[0:train_size], y[train_size:train_size valid_size], y[-test_size:]
X_train, X_valid, X_test = X[0:train_size], X[train_size:train_size valid_size], X[train_size valid_size:]
X_train = np.reshape(X_train, (X_train.shape[0], 1, X_train.shape[1]))
X_valid = np.reshape(X_valid, (X_valid.shape[0], 1, X_valid.shape[1]))
X_test = np.reshape(X_test, (X_test.shape[0], 1, X_test.shape[1]))
input=X_train[1:]
input_shape=X_train.shape[1:]
print (y_train.shape, y_valid.shape, y_test.shape)
model = Sequential()
model.add(LSTM(150, input_shape=X_train.shape[1:], activation='relu',return_sequences=True))
model.add(Dropout(0.3))
model.add(LSTM(300, activation='relu'))
model.add(Dropout(0.3))
model.add(Dense(200, activation='relu'))
model.add(Dropout(0.6))
model.add(Dense(1, activation='relu'))
optimizer = tf.keras.optimizers.SGD(learning_rate=e_LR)
model.compile(optimizer=optimizer,loss='MeanAbsoluteError')
history = model.fit(X_train, y_train, epochs=e_epoch, batch_size=e_batch_size, verbose=0, validation_data=(X_valid, y_valid), shuffle=True)
在此處輸入影像描述 這是模型損失和結果。訓練期和驗證期的結果都還可以,但是測驗期的結果太差了。我應該如何修改模型?(資料沒有歸一化,因為歸一化的預測是一條直線。)
uj5u.com熱心網友回復:
對不起,我的聲譽不足以讓我直接發表評論。可以嘗試以下三種解決方案: 1. 盡可能降低學習率 2. 降低模型復雜度,比如降低 LSTM 的隱藏大小。3.增加訓練輪數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/450127.html
