兩周深度學習計畫(二)

2022-09-18 22:21:11 字數 989 閱讀 2826

今天是task02,包含文字預處理;語言模型和迴圈神經網路基礎課程。

這裡講述了一些文字預處理到普通rnn模型的解決方案,課程中講的分詞,建立字典的方案是較初步的處理,相較於比較複雜的非結構化的資料,特別是文字來說, 預處理的步驟是及其繁瑣的,具體可參考針對於非結構化的資料(文字類)所述。

思維導圖如下:

列出一些問題,如下:

為何要建立詞典?

詞典的主要作用是將每乙個詞對映到乙個唯一的索引號,主要構建了乙個idx_to_token列表來儲存所有的詞,乙個token_to_idx來儲存所有詞的索引。在實現的的流程上是:

其中有一些名詞:

pad的作用是在採用批量樣本訓練時,對於長度不同的樣本(句子),對於短的樣本採用pad進行填充,使得每個樣本的長度是一致的

bos( begin of sentence)和eos(end of sentence)是用來表示一句話的開始和結尾

unk(unknow)的作用是,處理遇到從未出現在預料庫的詞時都統一認為是unknow ,在**中還可以將一些頻率特別低的詞也歸為這一類。

迴圈神經網路使用相鄰取樣的時候為什麼要detach引數?

我們知道相鄰取樣的前後兩個批量的資料在在時間步上是連續的,所以模型會使用上乙個批量的隱藏狀態初始化當前的隱藏狀態,表現形式就是不需要在乙個epoch的每次迭代時隨機初始化隱藏狀態,那麼,假如沒有detach的操作,每次迭代之後的輸出是乙個葉子節點,並且該葉子節點的requires_grad = true,也就意味著兩次或者說多次的迭代,計算圖一直都是連著的,因為沒有遇到梯度計算的結束位置,這樣將會一直持續到下一次隱藏狀態的初始化。所以這將會導致計算圖非常的大,進而導致計算開銷非常大。而每次將引數detach出來,其實就是相當於每次迭代之後雖然是使用上一次迭代的隱藏狀態,只不過我們希望重新開始,具體的操作就是把上一次的輸出節點的引數requires_grad設定為false的葉子節點。

兩周深度學習計畫(一)

在這裡我將記錄讀書筆記和個人感想。對於我個人學習深度學習的經歷來說,深度學習的理論部分和實踐部分是同等重要的,對於理論部分,自然是要自己在紙上細細推導兩遍,對於實踐部分,僅靠著線上參照著jupyter打兩遍 是不夠的,更多的需要在比賽,或者實習中不斷精進。下面,我將主要記錄深度學習理論部分的重難點和...

2020 10 12 10 25兩周學習目標

英語文獻閱讀能力,第一周達到快速閱讀文章,學習基本專業術語 第二週能掌握文章寫作邏輯,能快速提煉出文章的四點 研究背景 想要解決什麼問題 研究物件 是ct?是dt?是nonlinear?是unknown?是dynamic?研究方法 結論專業基礎能力 第一周,了解矩陣理論等數學工具,現代控制理論等系統...

過了兩周的大二

總是在感慨時間很快,然而時間總是在感慨中更快的溜走。大一的軍訓訓得熱火朝天,想想去年的這個時候,我正在軍體拳方隊中揮汗如雨,有考慮過我剩下的四年要怎麼過,一不小心只剩下三年了。大二和大一簡直是毫無可比性,一開學,各種專業課猛地就全上來了,成天的滿課,為了早日修滿公選課個性課學分,周一到周四晚上也全是...