iT邦幫忙

2023 iThome 鐵人賽

DAY 9
0
AI & Data

深入探索AI模型系列 第 9

【Day 09】 LSTM實作

  • 分享至 

  • xImage
  •  

在今天的實作中,我們會利用到【Day 07】RNN實作中的stock2021.csv,今天最終的結果會與一般RNN的結果做一個對比。如果還沒有看過【Day 07】的內容的話,可以先回過頭看看喔!

那LSTM實作與RNN實作差異點就在建構模型時,這次要使用LSTM而不是SimpleRNN。我們這次同樣使用keras.layers中的套件直接建構模型,完整函式的程式碼如下:

def build_model():
    model = Sequential()
    model.add(LSTM(input_shape = (10, 3), units = 256, unroll = False))
    model.add(Dense(units = 1))
    model.compile(loss = "mse", optimizer = "adam", metrics = ["accuracy"])
    
    return model

在RNN實作中我們用了plotly來展示預測結果,我們這次使用另外一種呈現方式,也就是python鼎鼎大名的matplotlib.pyplot。這個套件使用起來比較的簡單,只需要將資料直接丟進plot函式並且指定顏色和線的種類就好。

plt.plot(predict_y, "b:")
plt.plot(test_y, "r-")
plt.legend(["預測", "收盤價"])
plt.show()

這邊有個小提醒,在使用matplotlib.pyplot的時候,由於我們的圖中包含中文,因此可能會出現文字顯示異常的狀況。如果發生這種情形,只需要執行下方程式碼,下載中文字型並且指定給matplotlib.pyplot使用就好,如果想要下載其他中文字型當然也可以,只要記得要改變套用就好囉!

!wget -O TaipeiSansTCBeta-Regular.ttf https://drive.google.com/uc?id=1eGAsTN1HBpJAkeVM57_C7ccp7hbgSz3_&export=download

from matplotlib.font_manager import fontManager
fontManager.addfont('TaipeiSansTCBeta-Regular.ttf')

最後我們模型所預測的結果如下。乍看之下,好像結果與【Day 07】RNN實作的結果差不多,但其實在某些轉折處,LSTM模型所預測的結果是較佳的。而LSTM還有更進階的版本,我們將在明天做介紹喔!

https://ithelp.ithome.com.tw/upload/images/20230816/20150784rCeTArcYXS.png


上一篇
【Day 08】 LSTM(長短期記憶 Long Short-term Memory)
下一篇
【Day 10】 GRU(Gated Recurrent Unit)
系列文
深入探索AI模型30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言