這篇是修正前面幾篇的結果並統整
說認真,當初看到這三篇的結果時,真的打擊han大耶,這真的跟我想得不一樣,看完結果後本來沒有想要繼續第四篇的Orz
好險好奇心旺盛的我,今天挑戰我原本第四天要實測的內容過程中,發現了一個超級天大無敵白癡的bug,讓我與各位分享分享這個bug吧XD
事情是這樣的,當初我在建立dataset的時候,有遇到這個問題
RuntimeWarning: divide by zero encountered in double_scalars
RuntimeWarning: invalid value encountered in multiply
當初我很重視這個問題,因為我很明確知道這個絕對會影響到我的結果,所以爬了一下文,並「的確有修復這個問題」
很好啊? 所以怎麼了?
重點來了,因為是在np
計算中出現的,我為了這個而特別使用np.where
函數來幫助運算,但龜毛如我,認為如果在np.array
裡面有處理好的話我就可以不用耗這個計算了呀!
np.array
在遇到這樣的情況下會幫你直接輸出成0我信了這說法
我信了這說法
我信了這說法
所以看到這裡,各位知道我遇到什麼問題了嗎?
作者你也太不專業了吧~
其實我還有特別去查過,keras
在訓練時,如果遇到nan
也就是一般divide by 0
的值時,是無法有loss
數值的,但我的LSTM
可以正常訓練,所以我才放心地讓它去 (真的去了...
那你怎麼發現的啦?
我今天在準備我的「暴力系列」最終章時,因為會用到比較特殊的網路處理資料,所以在處理過程中,該網路就是出現loss
為nan
,此時我才確定了問題點...而且後來想想LSTM
的loss
永遠都是以1
來傳遞,所以一定會有loss
(哀~誰能想到Orz
話就說到此,我們來看看真實的結果吧!
測試樣本 | 結果 |
---|---|
500 | |
750 | |
1000 | |
1500 |
測試樣本 | 結果 |
---|---|
1800 | |
1750 | |
1700 | |
1650 | |
1600 | |
1550 |
測試樣本 | 結果 |
---|---|
1800 | |
1750 | |
1700 | |
1650 | |
1600 | |
1550 |
挖屋~看起來正經多了 !! (拜託我都快哭了
以下我大概統整了一下我認為的優缺點 :
篇章 | 目的 | 優點 | 缺點 |
---|---|---|---|
第一篇 | 期望預測下一次交易價格 | 儘管輸出並不理想,但可以發現它的確在小的training dataset下有學習能力。 | 訓練超級久,網路過大,有很多空間可以簡化 |
第二篇 | 希望可以預測action |
較符合我們需求:低點買進高點賣出 | 只有預測下一次的可能性,波段過小沒效益 |
第三篇 | 希望可以提早佈局地預測action |
對於強烈震幅會有很好的預測 | 沒有實用度,除了波段過小,同時對於持續上或持續下都無法有好的預測 |
上方是我的小小統計,這也是我所預期的 (嗚嗚嗚...
從「第二篇」和「第三篇」的缺點下手,這也是我在上一篇所說,我們期望能夠預測「趨勢」。 整理就先到這邊吧! 程式碼都在那三篇的底部XD 無聊可以玩玩。 暴力系列剩下最後一篇,能不能明天更呢? 我也不知道XD