---
# System prepended metadata

title: Assignment#2

---

# Assignment#2
# a)Method descriptions:
  使用RNN預測A、B與C之間的數學關係。
# b)Source code explanations:
  第一次嘗試，在RNN.ipynb裡面，我原本以為int可能表現不出來這麼大的數字，只需要使用float就可以處理，所以使用了lstm做簡單的預測。
  先建構好RNN與dataloader後，運行一遍，發現model預測出來的數字落差太大，loss會出現inf的狀態，導致第二次運行預測就開始出現nan的情況。所以我打算使用data normalization幫助我的資料變得容易運算，沒想到np.max和np.min取出來相減的東西會是0，應該是數字太大，導致它已經無法做數學運算，MinMaxScaler的想法也只能落空。
  第二次嘗試，在seq2seq.ipynb裡面，想把資料當作純文字來看待，所以使用了encoder與decoder，而且因為要輸出一句話，所以還有使用到seq2seq將encoder與decoder組合起來。
  也是先找資料架構好網路跟訓練測試的部分，但最後在一開始data輸入的地方遇到大問題，一開始使用的floatTensor要改成Torchtext的Field去處理資料，但遇到改版，自己嘗試多次都無法做到跟資料內容一樣的方式去得到正確的輸入。
  詳細的內容程式碼裡面有做註解。
# c)實驗成果:
  兩份失敗的網路架構
# d)Discussions on the results:
  這次作業有花了比第一份作業多更多的時間去研究，但是老師給的資料集比較特殊，花了很多時間在做事前的準備，找資料和同學討論，但沒有找到一個相似度比較高的案例可以做參考。只能自己努力多看幾次老師的教學影片跟網路上的資料，嘗試去做到作業所需的prediction。雖然最後一樣沒有做出來，但是對於RNN的架構熟悉了很多，上課聽不太懂的地方都弄懂了。
# e)Concluding remarks:
  這次最印象深刻的地方在於一開始怎麼都想不明白為什麼老師會要求必須使用RNN，不夠清楚RNN的架構，就不太知道RNN處理這種預測有些甚麼樣的優勢，就去多找資料跟同學一起討論。經過好幾個熬夜的努力弄懂之後，開始投入coding的努力，但還是有點失望，沒有得到一個可以確定自己已經清楚明白的成果。
