您現在的位置是:首頁 > 垂釣

keras搭建多層LSTM時間序列預測模型

  • 由 強大的網際網路 發表于 垂釣
  • 2023-01-29
簡介history[‘loss’]#記錄模型模型的損失函式值 return model4層LSTMdef lstm_4layer(x,y,hidden_cell,epoch,batch_size,verbose): model = Sequen

kers是什麼意思

參考基於 Keras 的 LSTM 時間序列分析——以蘋果股價預測為例

######################匯入庫########################## import os os。environ[‘KERAS_BACKEND’]=‘tensorflow’ import keras import tensorflow as tf from keras import optimizers#最佳化器 from keras。models import Sequential, load_model from keras。layers import Dense, LSTM from keras。layers import Dropout

1層LSTM

def lstm_single(x,y,hidden_cell,epoch,batch_size,verbose): #verbose=0不顯示訓練進度,verbose=2顯示訓練進度和每個epoch所需時間 model = Sequential() model。add(LSTM(hidden_cell, input_shape=(x。shape[1],1))) model。add(Dense(1)) adam=optimizers。Adam(learning_rate=0。01) model。compile(loss=‘mean_squared_error’, optimizer=adam) model。fit(x,y, epochs=epoch, batch_size=batch_size, verbose=verbose) #loss=model。history。history[‘loss’]#記錄模型模型的損失函式值 return model

4層LSTM

def lstm_4layer(x,y,hidden_cell,epoch,batch_size,verbose): model = Sequential() model。add(LSTM(units=hidden_cell,return_sequences=True,input_shape=(x。shape[1], 1))) model。add(Dropout(0。2))#可有可無, model。add(LSTM(units=hidden_cell,return_sequences=True)) model。add(Dropout(0。2)) model。add(LSTM(units=hidden_cell,return_sequences=True)) model。add(Dropout(0。2)) model。add(LSTM(units=hidden_cell)) model。add(Dropout(0。2)) model。add(Dense(units=1)) adam=optimizers。Adam(learning_rate=0。01) model。compile(loss=‘mean_squared_error’, optimizer=adam) #上面兩行可以用下面這行代替,但是下面這行不能修改學習率 #model。compile(optimizer=‘adam’,loss=‘mean_squared_error’) model。fit(x,y,epochs=epoch,batch_size=batch_size,verbose=verbose) return model

引數初始化

‘’‘變數初始化’‘’ import numpy as np x_train=np。random。random(size=(300,5,1)) y_train=np。random。random(300) x_test=np。random。random(size=(100,5,1)) y_test=np。random。random(100) hidden_cell,epoch,batch_size,verbose=5,100,1,0 #hidden_cell是隱層節點數,epoch是最大訓練次數,batch_size我說不清,只知batch_size越大訓練越快,但是精度下降,verbose=0不會顯示訓練過程,=1或者=2會顯示訓練過程batch_size和verbose有預設值

模型訓練

x=x_train;y=y_train hidden_cell,epoch,batch_size,verbose=5,100,1,0 model=lstm_4layer((x,y,hidden_cell,epoch,batch_size,verbose))

繪製模型訓練過程損失值變化情況

plt。plot(model。history。history[‘loss’]) plt。xlabel(‘epochs’) plt。ylabel(‘loss’)

使用訓練好的模型預測

ypre=model。predict(x_test,y_test)來源:

Top