22 循環(huán)神經(jīng)網(wǎng)絡(luò)

上一篇介紹了卷基層看锉,可以用來構(gòu)建很常見的卷積神經(jīng)網(wǎng)絡(luò)等模型乌叶。那么今天將要介紹的是遞歸層叠聋,是一個可以用來構(gòu)建遞歸網(wǎng)絡(luò)(RNN)的基礎(chǔ)部件麻车。具體的RNN知識缀皱,可以參考文章:《深入探究遞歸神經(jīng)網(wǎng)絡(luò)》。如果感覺上面這篇文章比較抽象动猬,那么強(qiáng)烈建議讀者閱讀一下《遞歸神經(jīng)網(wǎng)絡(luò)不可思議的有效性》啤斗,因為它結(jié)合實際講述了RNN的強(qiáng)大。下面來看下遞歸層都有哪些結(jié)構(gòu)赁咙。

一钮莲、SimpleRNN

keras.layers.recurrent.SimpleRNN(output_dim,  
        init='glorot_uniform', inner_init='orthogonal', activation='sigmoid', weights=None,  
        truncate_gradient=-1, return_sequences=False, input_dim=None, input_length=None)  

一種輸出反饋給輸入的全連接RNN免钻。
** inputshape: 3維 tensor(nb_samples, timesteps,input_dim)
** outputshape
: 如果return_sequences=True,那么輸出3維 tensor(nb_samples, timesteps, output_dim) .否則輸出2維tensor(nb_samples,output_dim)臂痕。
** Masking:This layer supports masking forinput data with a variable number of timesteps To introduce masks to your data,use an Embedding layer with themask_zero parameter set toTrue.
** 參數(shù)

  • output_dim : 內(nèi)部計算和最終輸出的維度伯襟。
  • init : 初始化權(quán)值的函數(shù)名稱或Theano function猿涨∥胀可以使用Keras內(nèi)置的(內(nèi)置初始化權(quán)值函數(shù)見這里),也可以傳遞自己編寫的Theano function叛赚。如果不給weights傳遞參數(shù)時澡绩,則該參數(shù)必須指明。
  • activation : 激活函數(shù)名稱或者Theano function俺附》士ǎ可以使用Keras內(nèi)置的(內(nèi)置激活函數(shù)見這里),也可以是傳遞自己編寫的Theano function事镣。如果不明確指定步鉴,那么將沒有激活函數(shù)會被應(yīng)用。
  • weights :用于初始化權(quán)值的numpy arrays組成的list璃哟。這個List應(yīng)該有3個元素氛琢,它們的shape是[(input_dim, output_dim), (output_dim, output_dim),(output_dim,)]
  • truncate_gradient: 在BPTT(back propgation throughtime, BP算法加入了時間維度)算法中的truncate步數(shù)。
  • return_sequence: Boolean.False返回在輸出序列中的最后一個輸出随闪;True返回整個序列阳似。
  • input_dim:輸入數(shù)據(jù)的維度。當(dāng)把該層作為模型的第一層時铐伴,這個參數(shù)和input_shape至少要提供一個傳值撮奏。
  • input_length:輸入序列的長度。This argument is required ifyou are going to connectFlatten thenDense layers upstream (without it,the shape of the dense outputs cannot be computed)

二当宴、SimpleDeepRNN

keras.layers.recurrent.SimpleDeepRNN(output_dim,depth=3,  
        init='glorot_uniform', inner_init='orthogonal',  
        activation='sigmoid', inner_activation='hard_sigmoid',  
        weights=None, truncate_gradient=-1, return_sequences=False,  
        input_dim=None, input_length=None) 

一種經(jīng)過多步(由參數(shù)depth決定)計算輸出反饋給輸入的全連接RNN畜吊。示例代碼如下:

output= activation(W.x_t + b +inner_activation(U_1.h_tm1) +inner_activation(U_2.h_tm2) + ...)  

** inputshape: 3維 tensor(nb_samples, timesteps,input_dim)
** outputshape
: 如果return_sequences=True,那么輸出3維 tensor(nb_samples, timesteps, output_dim) .否則輸出2維tensor(nb_samples,output_dim)户矢。
** Masking:This layer supports masking forinput data with a variable number of timesteps To introduce masks to your data,use an Embedding layer with themask_zero parameter set toTrue.
** 參數(shù)

  • output_dim : 內(nèi)部計算和最終輸出的維度定拟。
  • depth : int>=1.循環(huán)迭代的次數(shù)。如果depth=1逗嫡,那么就等價于SimpleRNN青自。
  • init : 初始化權(quán)值的函數(shù)名稱或Theano function∏ぃ可以使用Keras內(nèi)置的(內(nèi)置初始化權(quán)值函數(shù)見這里)延窜,也可以傳遞自己編寫的Theano function。如果不給weights傳遞參數(shù)時抹锄,則該參數(shù)必須指明逆瑞。
  • inner_init : 內(nèi)部神經(jīng)元的權(quán)值初始化荠藤。
  • activation : 激活函數(shù)名稱或者Theano function』窀撸可以使用Keras內(nèi)置的(內(nèi)置激活函數(shù)見這里)哈肖,也可以是傳遞自己編寫的Theano function。如果不明確指定念秧,那么將沒有激活函數(shù)會被應(yīng)用淤井。
  • inner_activation: 內(nèi)部隱層的激活函數(shù)。
  • weights :用于初始化權(quán)值的numpy arrays組成的list摊趾。這個List應(yīng)該有depth+2個元素币狠。
  • truncate_gradient: 在BPTT(back propgation throughtime, BP算法加入了時間維度)算法中的truncate步數(shù)。
  • return_sequence: Boolean.False返回在輸出序列中的最后一個輸出砾层;True返回整個序列漩绵。
  • input_dim:輸入數(shù)據(jù)的維度。當(dāng)把該層作為模型的第一層時肛炮,這個參數(shù)和input_shape至少要提供一個傳值止吐。
  • input_length:輸入序列的長度。This argument is required ifyou are going to connectFlatten thenDense layers upstream (without it,the shape of the dense outputs cannot be computed)

三侨糟、GRU

keras.layers.recurrent.GRU(output_dim,  
        init='glorot_uniform', inner_init='orthogonal',  
        activation='sigmoid', inner_activation='hard_sigmoid',  
        weights=None, truncate_gradient=-1, return_sequences=False,  
        input_dim=None, input_length=None)  

GRU(Gated Recurrent Unit)單元(2014年提出)碍扔。是實現(xiàn)RNN模型的主要單元之一。
** inputshape: 3維 tensor(nb_samples, timesteps,input_dim)
** outputshape
: 如果return_sequences=True粟害,那么輸出3維 tensor(nb_samples, timesteps, output_dim) .否則輸出2維tensor(nb_samples,output_dim)蕴忆。
** Masking:This layer supports masking forinput data with a variable number of timesteps To introduce masks to your data,use an Embedding layer with themask_zero parameter set toTrue.
** 參數(shù)

  • output_dim : 內(nèi)部計算和最終輸出的維度。
  • init : 初始化權(quán)值的函數(shù)名稱或Theano function悲幅√锥欤可以使用Keras內(nèi)置的(內(nèi)置初始化權(quán)值函數(shù)見這里),也可以傳遞自己編寫的Theano function汰具。如果不給weights傳遞參數(shù)時卓鹿,則該參數(shù)必須指明。
  • inner_init : 內(nèi)部神經(jīng)元的權(quán)值初始化留荔。
  • activation : 激活函數(shù)名稱或者Theano function吟孙。可以使用Keras內(nèi)置的(內(nèi)置激活函數(shù)見這里)聚蝶,也可以是傳遞自己編寫的Theano function杰妓。如果不明確指定,那么將沒有激活函數(shù)會被應(yīng)用碘勉。
  • inner_activation: 內(nèi)部隱層的激活函數(shù)巷挥。
  • weights :用于初始化權(quán)值的numpy arrays組成的list。這個List應(yīng)該有9個元素验靡。
  • truncate_gradient: 在BPTT(back propgation throughtime, BP算法加入了時間維度)算法中的truncate步數(shù)倍宾。
  • return_sequence: Boolean.False返回在輸出序列中的最后一個輸出雏节;True返回整個序列。
  • input_dim:輸入數(shù)據(jù)的維度高职。當(dāng)把該層作為模型的第一層時钩乍,這個參數(shù)和input_shape至少要提供一個傳值。
  • input_length:輸入序列的長度怔锌。This argument is required ifyou are going to connectFlatten thenDense layers upstream (without it,the shape of the dense outputs cannot be computed)
    ** 本小節(jié)參考文獻(xiàn)**:
    On the Properties of NeuralMachine Translation: Encoder–Decoder Approaches
    Empirical Evaluation of GatedRecurrent Neural Networks on Sequence Modeling

四寥粹、LSTM

keras.layers.recurrent.LSTM(output_dim,  
        init='glorot_uniform', inner_init='orthogonal', forget_bias_init='one',  
        activation='tanh', inner_activation='hard_sigmoid',  
        weights=None, truncate_gradient=-1, return_sequences=False,  
        input_dim=None, input_length=None) 

LSTM(Long-Short Term Memoryunit)單元(1997年Hochreiter提出)。是用來構(gòu)建RNN網(wǎng)絡(luò)的主要單元之一产禾。
** inputshape: 3維 tensor(nb_samples, timesteps,input_dim)
** outputshape
: 如果return_sequences=True排作,那么輸出3維 tensor(nb_samples, timesteps, output_dim) .否則輸出2維tensor(nb_samples,output_dim)牵啦。
** Masking:This layer supports masking forinput data with a variable number of timesteps To introduce masks to your data,use an Embedding layer with themask_zero parameter set toTrue.
** 參數(shù)

  • output_dim : 內(nèi)部計算和最終輸出的維度亚情。
  • init : 初始化權(quán)值的函數(shù)名稱或Theano function」可以使用Keras內(nèi)置的(內(nèi)置初始化權(quán)值函數(shù)見這里)楞件,也可以傳遞自己編寫的Theano function。如果不給weights傳遞參數(shù)時裳瘪,則該參數(shù)必須指明土浸。
  • inner_init : 內(nèi)部神經(jīng)元的權(quán)值初始化。
  • forget_bias_init: 初始化forget gate的偏置函數(shù)彭羹。Jozefowiczet al.推薦初始化為1黄伊。
  • activation : 激活函數(shù)名稱或者Theano function∨梢螅可以使用Keras內(nèi)置的(內(nèi)置激活函數(shù)見這里)还最,也可以是傳遞自己編寫的Theano function。如果不明確指定毡惜,那么將沒有激活函數(shù)會被應(yīng)用拓轻。
  • inner_activation: 內(nèi)部隱層的激活函數(shù)。
  • weights :用于初始化權(quán)值的numpy arrays組成的list经伙。這個List應(yīng)該有12個元素扶叉。
  • truncate_gradient: 在BPTT(back propgation throughtime, BP算法加入了時間維度)算法中的truncate步數(shù)。
  • return_sequence: Boolean.False返回在輸出序列中的最后一個輸出帕膜;True返回整個序列枣氧。
  • input_dim:輸入數(shù)據(jù)的維度。當(dāng)把該層作為模型的第一層時垮刹,這個參數(shù)和input_shape至少要提供一個傳值达吞。
  • input_length:輸入序列的長度。This argument is required ifyou are going to connectFlatten thenDense layers upstream (without it,the shape of the dense outputs cannot be computed)
    **** 本小節(jié)參考文獻(xiàn)
    Longshort-term memory (original 1997 paper)
    Learningto forget: Continual prediction with LSTM
    Supervised sequencelabelling with recurrent neural networks

五危纫、JZS1, JZS2, JZS3

keras.layers.recurrent.JZS1(output_dim,  
        init='glorot_uniform', inner_init='orthogonal',  
        activation='tanh', inner_activation='sigmoid',  
        weights=None, truncate_gradient=-1, return_sequences=False,  
        input_dim=None, input_length=None)  

**** ****是在近千種模型評估中進(jìn)化而來的Top 3的RNN結(jié)構(gòu)單元宗挥。它的作用與GRU和LSTM是一樣的乌庶。其對應(yīng)的MUT1, MUT2, 和MUT3結(jié)構(gòu)是在《An Empirical Exploration of Recurrent NetworkArchitectures, Jozefowicz et al. 2015》中的提出來的。
**** inputshape: 3維 tensor(nb_samples, timesteps,input_dim)
**** outputshape: 如果return_sequences=True契耿,那么輸出3維 tensor(nb_samples, timesteps, output_dim) .否則輸出2維tensor(nb_samples,output_dim)瞒大。
**** Masking:This layer supports masking forinput data with a variable number of timesteps To introduce masks to your data,use an Embedding layer with themask_zero parameter set toTrue.
**** 參數(shù)

  • output_dim : 內(nèi)部計算和最終輸出的維度。
  • init : 初始化權(quán)值的函數(shù)名稱或Theano function搪桂⊥傅校可以使用Keras內(nèi)置的(內(nèi)置初始化權(quán)值函數(shù)見這里),也可以傳遞自己編寫的Theano function踢械。如果不給weights傳遞參數(shù)時酗电,則該參數(shù)必須指明。
  • inner_init : 內(nèi)部神經(jīng)元的權(quán)值初始化内列。
  • forget_bias_init: 初始化forget gate的偏置函數(shù)撵术。Jozefowiczet al.推薦初始化為1。
  • activation : 激活函數(shù)名稱或者Theano function话瞧∧塾耄可以使用Keras內(nèi)置的(內(nèi)置激活函數(shù)見這里),也可以是傳遞自己編寫的Theano function交排。如果不明確指定划滋,那么將沒有激活函數(shù)會被應(yīng)用。
  • inner_activation: 內(nèi)部隱層的激活函數(shù)埃篓。
  • weights :用于初始化權(quán)值的numpy arrays組成的list处坪。這個List應(yīng)該有9個元素。
  • truncate_gradient: 在BPTT(back propgation throughtime, BP算法加入了時間維度)算法中的truncate步數(shù)架专。
  • return_sequence: Boolean.False返回在輸出序列中的最后一個輸出同窘;True返回整個序列。
  • input_dim:輸入數(shù)據(jù)的維度胶征。當(dāng)把該層作為模型的第一層時塞椎,這個參數(shù)和input_shape至少要提供一個傳值。
  • input_length:輸入序列的長度睛低。This argument is required ifyou are going to connectFlatten thenDense layers upstream (without it,the shape of the dense outputs cannot be computed)
    **** 本小節(jié)參考文獻(xiàn)
    An EmpiricalExploration of Recurrent Network Architectures

原文地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末案狠,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子钱雷,更是在濱河造成了極大的恐慌骂铁,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件罩抗,死亡現(xiàn)場離奇詭異拉庵,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)套蒂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進(jìn)店門钞支,熙熙樓的掌柜王于貴愁眉苦臉地迎上來茫蛹,“玉大人,你說我怎么就攤上這事烁挟∮ね荩” “怎么了?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵撼嗓,是天一觀的道長柬采。 經(jīng)常有香客問我,道長且警,這世上最難降的妖魔是什么粉捻? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮斑芜,結(jié)果婚禮上肩刃,老公的妹妹穿的比我還像新娘。我一直安慰自己押搪,他們只是感情好树酪,可當(dāng)我...
    茶點故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布浅碾。 她就那樣靜靜地躺著大州,像睡著了一般。 火紅的嫁衣襯著肌膚如雪垂谢。 梳的紋絲不亂的頭發(fā)上厦画,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天,我揣著相機(jī)與錄音滥朱,去河邊找鬼根暑。 笑死,一個胖子當(dāng)著我的面吹牛徙邻,可吹牛的內(nèi)容都是我干的排嫌。 我是一名探鬼主播,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼缰犁,長吁一口氣:“原來是場噩夢啊……” “哼淳地!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起帅容,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤颇象,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后并徘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體遣钳,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年麦乞,在試婚紗的時候發(fā)現(xiàn)自己被綠了蕴茴。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片劝评。...
    茶點故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖倦淀,靈堂內(nèi)的尸體忽然破棺而出付翁,到底是詐尸還是另有隱情,我是刑警寧澤晃听,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布百侧,位于F島的核電站,受9級特大地震影響能扒,放射性物質(zhì)發(fā)生泄漏佣渴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一初斑、第九天 我趴在偏房一處隱蔽的房頂上張望辛润。 院中可真熱鬧,春花似錦见秤、人聲如沸砂竖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽乎澄。三九已至,卻和暖如春测摔,著一層夾襖步出監(jiān)牢的瞬間置济,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人洪囤。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像羞酗,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子紊服,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,562評論 2 349

推薦閱讀更多精彩內(nèi)容