建設部網(wǎng)站1667號北京seo外包平臺
時間序列相關的項目在我之前的很多博文中都有涉及,覆蓋的數(shù)據(jù)領域也是比較廣泛的,很多任務或者是項目中往往是搭建出來指定的模型之后就基本完成任務了,比較少去通過實驗的維度去探索分析不同參數(shù)對模型性能的影響,這兩天正好有時間也有這么個機會,就想著從這個角度做點事情來對模型產(chǎn)生的結果進行分析。
數(shù)據(jù)可以使用任意時序的數(shù)據(jù)都是可以的,本質都是時間序列的數(shù)據(jù)即可。簡單的實例數(shù)據(jù)如下所示:
?參考前面的博文即可知曉如何將時序數(shù)據(jù)轉化為標準的預測數(shù)據(jù)集,這里就不再贅述了。
這里主要是想從實驗角度來分析結果,基礎模型構建如下所示,首先考慮的是模型層數(shù)產(chǎn)生的影響,這里層數(shù)從1疊加至3層:
def initModel(steps, features):"""模型初始化"""model = Sequential()model.add(LSTM(64,activation="relu",input_shape=(steps, features),kernel_regularizer=l2(0.001),return_sequences=False,))model.add(Dense(features))model.compile(optimizer="adam", loss="mse")return model
?結果如下所示:
?接下來是兩層的,如下所示:
def initModel(steps, features):"""模型初始化"""model = Sequential()model.add(LSTM(64,activation="relu",input_shape=(steps, features),kernel_regularizer=l2(0.001),return_sequences=True,))model.add(LSTM(64, activation="relu", kernel_regularizer=l2(0.001)))model.add(Dense(features))model.compile(optimizer="adam", loss="mse")return model
結果如下所示:
?最后是3層的,如下所示:
def initModel(steps, features):"""模型初始化"""model = Sequential()model.add(LSTM(64,activation="relu",input_shape=(steps, features),kernel_regularizer=l2(0.001),return_sequences=True,))model.add(LSTM(64, activation="relu", kernel_regularizer=l2(0.001),return_sequences=True))model.add(LSTM(64, activation="relu", kernel_regularizer=l2(0.001)))model.add(Dense(features))model.compile(optimizer="adam", loss="mse")return model
結果如下所示:
?直觀體驗下來是層數(shù)的增加并沒有帶來提升,反而是帶來了崩潰式的結果。
接下來想要看下同樣結構下,改變參數(shù)值帶來的變化。
簡單的實例如下所示:
def initModel(steps, features):"""模型初始化"""model = Sequential()model.add(LSTM(128,activation="relu",input_shape=(steps, features),kernel_regularizer=l2(0.001),return_sequences=False,))model.add(Dense(features))model.compile(optimizer="adam", loss="mse")return model
結果如下所示:
?接下來同樣的思路改變參數(shù),結果如下所示:
?參數(shù)的調整能帶來一定的改變但是限定在一定的復讀內,接下來考慮借鑒之前目標檢測里面的方案來改造設計新的結構,借助于搜索技術可以事半功倍,結果如下所示:
?可以看到:結果有了質的提升。后面有時間再繼續(xù)深度研究下。