發布時間: 2023-01-06 14:56:52
可以看到中間的 cell 里面有四個黃色小框:
-- 每一個小黃框代表一個前饋網絡層,其實就是經典的神經網絡的結構
-- 這個cell神經元個數和隱藏層個數皆可以設置
-- 其中1、2、4層的**函數是 sigmoid,第三層的**函數是 tanh。
1)、cell 的狀態是一個向量,是有多個值的
-- cell在t時刻的狀態即是ht
-- 上一層的狀態h_t-1 會和當前層的輸入xt結合
-- s(t)代表長期記憶,即是前面所有層的作用結果
-- h(t)是短期記憶,即是當前層的狀態
2)、上一次的狀態 h(t-1)是怎么和下一次的輸入 x(t) 結合
-- 很簡單,concat,也即是拼接起來
-- 直白的說就是把二者直接拼起來,比如 x是28位的向量,h(t-1)是128位的,那么拼起來就是156位的向量
3)、cell 的權重是共享的
-- 意思是這張圖看起來有三個cell,其實只是一個cell的的3個狀態;一個狀態是一個時間步,每個時間步有一個輸入,這個輸入由LSTM自動適配
4)、一層的 LSTM 的參數有多少個
-- 一層即是只有一個 cell,所以參數的數量就是這個 cell 里面用到的參數個數。
-- 假設 num_units 是128,輸入是28位的,那么根據上面的第 2 點,可以得到,四個小黃框的參數一共有 (128+28)*(128*4),也就是156 * 512
-- 可以看看 TensorFlow 的最簡單的 LSTM 的案例,中間層的參數就是這樣
-- 不過還要加上輸出的時候的**函數的參數,假設是10個類的話,就是128*10的 W 參數和10個bias 參數
怎么產生序列:
-- LSTM如果每個時間步都產生一個結果
-- 即是每基于一個輸入和上一個時間就產生一個結果,保留每個結果那不就可以產生一個序列了
怎么用來做普通預測:
-- 最后一層加上全連接網絡即可
輸入數據的格式為:[樣本總數/時間步個數 ,時間步長度,特征長度]
--即整體上要按時間步輸入樣本批次,一個批次樣本的數量 = 樣本總數量/時間步
--而具體到x中的每個元素,也要處理為 [時間步長度,特征長度] ,即是每個元素都是 時間步個數 條 樣本
更通俗理解:一個單詞代表一個timestep
在inference的時候,只能一個單詞一個單詞地輸出;
而在train的時候,我們有整個句子,因此可以一次feed若干個單詞(因為有n個timestep)
-- 比如一個訓練目標為Google is better than Apple
-- 因為timestep為5,于此同時訓練目標為is better than Apple
上一篇: esxi有什么功能
下一篇: dropout層的作用