循環(huán)神經(jīng)網(wǎng)絡(luò)-第一周-吳恩達(dá) Deep Learning Specialization 學(xué)習(xí)筆記

序列模型 sequence model

在前面已經(jīng)講到不同的神經(jīng)網(wǎng)絡(luò)架構(gòu)在處理不同類型的任務(wù)時(shí)具有不同的表現(xiàn)勃教,循環(huán)神經(jīng)網(wǎng)絡(luò) Recurrent neural network 在處理帶有前后序列性質(zhì)的數(shù)據(jù)如自然語(yǔ)言處理、機(jī)器翻譯弦赖、連續(xù)動(dòng)作識(shí)別等應(yīng)用具有非常明顯的先天優(yōu)勢(shì)恨樟,RNN 之所以如此命名是因?yàn)槲覀儠?huì)對(duì)序列中的每一個(gè)元素執(zhí)行同樣的操作曹动,因此可以視作一種循環(huán)機(jī)制。

The RNN performs the same task for each element in the sequence.

在 RNN 中渴杆,記憶被定義為前序隱藏層的輸出寥枝。

Memory is defined as the output of hidden layer neurons, which will serve as additional input to the network during next training step.

符號(hào)約定

為了便于統(tǒng)一符號(hào)注解,在后續(xù)的課程中磁奖,對(duì)于一個(gè)輸入序列 x 囊拜,x<i> 表示其中的第 i 個(gè)元素,y<i> 表示對(duì)應(yīng)輸出序列的第 i 個(gè)元素比搭,在很多論文中也用 h 來(lái)表示輸出冠跷。在時(shí)序數(shù)據(jù)中,由于引入了長(zhǎng)度的概念身诺,因此用 Tx 來(lái)表示一個(gè)輸入序列的長(zhǎng)度蜜托,用 Ty 來(lái)表示一個(gè)輸出序列的長(zhǎng)度。對(duì)于多個(gè)序列來(lái)說(shuō)戚长,x(i)<t> 表示第 i 個(gè)輸入中的第 t 個(gè)元素盗冷,相應(yīng)地,對(duì)于第 i 個(gè)輸入序列的長(zhǎng)度用 Tx(i) 來(lái)表示同廉,對(duì)于第 i 個(gè)輸出序列的長(zhǎng)度用 Ty(i) 來(lái)表示仪糖,值得注意的是在實(shí)際應(yīng)用中 Tx(i) 與 Ty(i) 不一定相等。

在自然語(yǔ)言相關(guān)的時(shí)序數(shù)據(jù)處理中迫肖,為了便于統(tǒng)一的表示序列中的數(shù)據(jù)锅劝,在處理具體的樣本前要先建立一個(gè)詞匯表 Vocabulary 或稱字典 Dictionary,再根據(jù)各個(gè)單詞在詞匯表中的索引位置來(lái)對(duì)輸入樣本中的詞匯進(jìn)行 one-hot encoding蟆湖,具體的操作過(guò)程在前面的 情感分析 的練習(xí)中已經(jīng)有過(guò)接觸和體會(huì)故爵,這里就不再贅述。

另外需要注意的一點(diǎn)是如果最終在輸入中出現(xiàn)字典中沒(méi)有的輸入詞匯隅津,則可以創(chuàng)建一個(gè)符號(hào) Token 如 <UNK> 來(lái)標(biāo)識(shí)這些未知詞匯诬垂,部分應(yīng)用中還會(huì)用 <EOS> 來(lái)代表句子的結(jié)束。

Word representation by one-hot encoding

循環(huán)神經(jīng)網(wǎng)絡(luò)模型建立

在前面的情感分析練習(xí)中已經(jīng)看到使用標(biāo)準(zhǔn)形式的多層神經(jīng)網(wǎng)絡(luò)在處理類似的語(yǔ)言類任務(wù)時(shí)表現(xiàn)并不突出伦仍,普通形式的神經(jīng)網(wǎng)絡(luò)在處理序列性質(zhì)的數(shù)據(jù)時(shí)面臨的主要問(wèn)題有:

  1. 對(duì)于不同的輸入和輸出來(lái)說(shuō)结窘,樣本可能會(huì)有不同的長(zhǎng)度

  2. 與在 CNN 中的情形類似,標(biāo)準(zhǔn)的多層神經(jīng)網(wǎng)絡(luò)不同單元之間無(wú)法共享在語(yǔ)句的不同位置學(xué)習(xí)到的特征

Why not Standard Neural Network

典型循環(huán)神經(jīng)網(wǎng)絡(luò)的工作機(jī)制

假設(shè)我們按照從左到右的方式處理一個(gè)語(yǔ)句充蓝,對(duì)于輸入語(yǔ)句的第一個(gè)單詞或稱元素 x<1>隧枫,網(wǎng)絡(luò)的第一步會(huì)計(jì)算相應(yīng)的預(yù)測(cè) ?<1>,此后對(duì)于語(yǔ)句中的第二個(gè)輸入元素 x<2> 來(lái)說(shuō)谓苟,網(wǎng)絡(luò)在預(yù)測(cè) ?<2> 時(shí)會(huì)接收上一步的激活信息 a<1>官脓,以此類推。由于網(wǎng)絡(luò)遵循從左到右的順序逐個(gè)對(duì)語(yǔ)句中的元素進(jìn)行處理涝焙,因此不同單詞的處理之間存在一個(gè)時(shí)間步 time step 的概念卑笨,但對(duì)于同一層來(lái)說(shuō)不同時(shí)間步之間的參數(shù)是相同的,也即圖中不同時(shí)間步中的 Wax 為同一套參數(shù)仑撞。由于對(duì)于下圖所示的循環(huán)神經(jīng)網(wǎng)絡(luò)來(lái)說(shuō)湾趾,時(shí)間步在后的網(wǎng)絡(luò)只參考時(shí)間步在前的信息芭商,因此這些參考信息的流動(dòng)是單向的,對(duì)于雙向傳遞的循環(huán)神經(jīng)網(wǎng)絡(luò) Bidirectional Recurrent Neural Network搀缠,BRNN 后續(xù)會(huì)做介紹铛楣。

Typical architecture of RNN

循環(huán)神經(jīng)網(wǎng)絡(luò)的前向傳播

在實(shí)際的 RNN 實(shí)現(xiàn)中,每一個(gè)時(shí)間步的 RNN 都可以被看作是一個(gè) 2 層的全連接的神經(jīng)網(wǎng)絡(luò)艺普,在此基礎(chǔ)上除了可以橫向的多個(gè)時(shí)間步進(jìn)行傳遞簸州,還可以將輸出沿縱向傳遞給更深的層次,進(jìn)而實(shí)現(xiàn) RNN 的堆疊歧譬。

A single time step of RNN in details

對(duì)于第一個(gè)單詞的前續(xù)輸入 a<0> 一般設(shè)置為元素全 0 的向量岸浑,此后對(duì)于輸入的第一個(gè)元素有:

  • a<1> = g(Waaa<0> + Waxx<1> + ba)
  • ?<1> = g'(Wyaa<1> + by)

更一般地,對(duì)于第 t 個(gè)時(shí)間步來(lái)說(shuō):

  • a<t> = g(Waaa<t-1> + Waxx<t> + ba)
  • ?<t> = g'(Wyaa<t> + by)

為了使得前向傳播的公式更加簡(jiǎn)潔瑰步,上式可以改寫為:

  • a<t> = g(Wa [a<t-1>, x<t>] + ba)
  • ?<t> = g'(Wya<t> + by)

其中 Wa 為將 Waa 和 Wax 水平并列放置的結(jié)果矢洲,即 Wa = [Waa | Wax],而 [a<t-1>, x<t>] 為上下放置的結(jié)果缩焦,相應(yīng)的在 Numpy 中可以采用 hstack((Waa, Wax)) 和 vstack((a<t-1>, x<t>)) 來(lái)實(shí)現(xiàn)读虏。

與在 CNN 中常用 ReLU 做激活函數(shù)不同的是在 RNN 中常用的激活函數(shù)是 tanh,對(duì)于預(yù)測(cè)部分的激活函數(shù)則可以根據(jù)實(shí)際應(yīng)用使用 Sigmoid 或 Softmax 等袁滥。

循環(huán)神經(jīng)網(wǎng)絡(luò)的反向傳播

在討論反向傳播之前需要針對(duì)任意一個(gè)時(shí)間步定義一個(gè)損失函數(shù)盖桥,在這里仍然采用交叉熵函數(shù):

  • L<t>(?<t>, y<t>) = -y<t>log?<t> - (1 - y<t>)log(1 - ?<t>)

相應(yīng)地,對(duì)于整個(gè)輸入序列來(lái)說(shuō)則可以定義成本函數(shù)如下:

  • L(?, y) = ΣL<t>(?<t>, y<t>)题翻, t = 1, 2, 3, ... , Tx

具體的計(jì)算過(guò)程類似前面講到的神經(jīng)網(wǎng)絡(luò)的反向傳播計(jì)算揩徊,先計(jì)算前向傳播(綠色箭頭),并計(jì)算各個(gè)節(jié)點(diǎn)的損失函數(shù)嵌赠,最終再通過(guò)計(jì)算圖計(jì)算反向傳播(紅色箭頭)塑荒,通過(guò)梯度下降來(lái)完成參數(shù)的更新。由于在序列類型的輸入中引入了時(shí)間的概念姜挺,因此這個(gè)過(guò)程中的反向傳播稱為 Backpropagation through time齿税。

Forward and backpropogation

不同類型的循環(huán)神經(jīng)網(wǎng)絡(luò)

上面討論的 RNN 中 Tx 與 Ty 是等長(zhǎng)的,而現(xiàn)實(shí)中的情形不總是如此初家。對(duì)于下面的這些不同類型的序列數(shù)據(jù)來(lái)說(shuō)偎窘,有些時(shí)候輸入僅是一維的乌助,而對(duì)應(yīng)的輸出則是多維的溜在,在另一些情形下輸入有些時(shí)候是多維的,而輸出則是一維的他托。

Examples of sequence data

如果將之前的循環(huán)神經(jīng)網(wǎng)絡(luò)稱為 many-to-many 的架構(gòu)掖肋,那么對(duì)于類似電影情感分析類的多個(gè)輸入、單個(gè)輸出的 RNN 則可以稱為 many-to-one RNN:

Many-to-one architecture

反之對(duì)于音樂(lè)生成類單個(gè)輸入赏参、多個(gè)輸出的架構(gòu)則可以稱為 one-to-many RNN:

One-to-many architecture

同時(shí)對(duì)于 many-to-many RNN 也存在輸入和輸出均為多個(gè)但又不相等的情形:

Many-to-many RNN with different input and output length

語(yǔ)言建模和序列生成

簡(jiǎn)單說(shuō)來(lái)語(yǔ)言建模的目的就是希望可以對(duì)于多個(gè)不同的語(yǔ)句組合給予一個(gè)概率評(píng)價(jià)志笼,從而確定一個(gè)最高概率的語(yǔ)句組合沿盅。通過(guò) RNN 進(jìn)行語(yǔ)言模型的構(gòu)建過(guò)程如下:

  1. 首先需要獲取一個(gè)大型的語(yǔ)言信息訓(xùn)練集,這個(gè)集合在自然語(yǔ)言處理的語(yǔ)境中常被稱為語(yǔ)料庫(kù) corpus

  2. 在此基礎(chǔ)上需要針對(duì)訓(xùn)練集中的詞匯通過(guò) one-hot encoding 的形式將其符號(hào)化纫溃,以此作為網(wǎng)絡(luò)的輸入

  3. 通過(guò)對(duì)于網(wǎng)絡(luò)的訓(xùn)練確定不同語(yǔ)句及組合方式在尋常的表達(dá)中出現(xiàn)的概率腰涧,此時(shí)的輸出激活函數(shù)需要采用 softmax

使用循環(huán)神經(jīng)網(wǎng)絡(luò)進(jìn)行語(yǔ)言模型訓(xùn)練時(shí)的一個(gè)具體的細(xì)節(jié)是會(huì)令 x<t> = y<t-1>,也即不斷的在后續(xù)的節(jié)點(diǎn)告知前面語(yǔ)句的正確輸入信息紊浩,在此基礎(chǔ)上計(jì)算在已知輸入為某個(gè)詞語(yǔ)的條件下語(yǔ)料庫(kù)中所有詞匯出現(xiàn)的概率窖铡,其本質(zhì)上是通過(guò)網(wǎng)絡(luò)計(jì)算一系列的條件概率。

RNN model is essentially a serials of conditional probability

抽樣獲取新序列

在訓(xùn)練完成后坊谁,可以通過(guò)采用 np.random.choice( ) 在詞匯表中隨機(jī)選取詞匯構(gòu)成新的序列組合來(lái)對(duì)模型進(jìn)行測(cè)試费彼,以直觀的了解模型學(xué)到了什么。

Random sampling and testing

這里需要注意的是在構(gòu)建語(yǔ)言模型的時(shí)候口芍,可以構(gòu)建基于詞匯水平的模型箍铲,也可以構(gòu)建基于字母水平的模型。在構(gòu)建字母水平的模型時(shí)由于會(huì)對(duì)每一個(gè)字母進(jìn)行分拆因此序列會(huì)變得非常的長(zhǎng)鬓椭,并且不如詞匯水平的模型對(duì)于句子不同位置的詞匯間的相關(guān)關(guān)系的捕捉能力颠猴。

RNN 中的梯度消失問(wèn)題

由于有時(shí)在自然語(yǔ)言中前后詞匯之間的相關(guān)關(guān)系經(jīng)常要間隔較長(zhǎng)的詞匯才會(huì)出現(xiàn),例如對(duì)于主語(yǔ)使用復(fù)數(shù)形式時(shí)膘融,在一個(gè)從句當(dāng)中其謂語(yǔ)可能會(huì)間隔了幾十個(gè)單詞才需要出現(xiàn)芙粱,此時(shí)由于深層網(wǎng)絡(luò)存在的梯度消失問(wèn)題,前面講到的標(biāo)準(zhǔn)形式的 RNN 就比較難將前面的信息傳遞到后面氧映。

Gated RNN Unit, GRU

為了解決長(zhǎng)間隔的序列信息傳遞問(wèn)題春畔,GRU 單元引入了一個(gè)記憶單元 memory cell,記做 C 來(lái)在處理信息的同時(shí)對(duì)重要的信息進(jìn)行記憶岛都,且在第 t 個(gè)時(shí)間步有 C<t> = a<t>律姨,在網(wǎng)絡(luò)計(jì)算中用 ?<t> = tanh(Wc [C<t-1>, x<t>] + bc) 來(lái)做為 C<t> 的備選值,在決定是否采用 ?<t> 來(lái)對(duì) C<t> 進(jìn)行更新時(shí)臼疫,可以設(shè)置一個(gè) Γu = σ(Wu [C<t-1>, x<t>] + bu) 來(lái)計(jì)算相應(yīng)的概率值择份,由于這個(gè) Γ 的取值范圍是 (0, 1) ,并且在實(shí)際計(jì)算中取值基本為 0 或 1烫堤,因此對(duì)于是否對(duì) C<t> 進(jìn)行更新的判斷公式可以總結(jié)為 C<t> = Γu * ?<t> + (1 - Γu) * C<t-1>荣赶,最后這一步為基于元素的向量乘法 elementwise。

上述 GRU 單元實(shí)際上是一個(gè)簡(jiǎn)化的版本鸽斟,在實(shí)際實(shí)施中更為完整的版本如下:

  • ?<t> = tanh(Wc [ ΓrC<t-1>, x<t>] + bc)

  • Γr = σ(Wr [C<t-1>, x<t>] + br)

  • Γu = σ(Wu [C<t-1>, x<t>] + bu)

  • C<t> = Γu * ?<t> + (1 - Γu) * C<t-1>

公式中添加了 Γr 項(xiàng)以確定 c<t-1> 的重要性 relevance拔创。

長(zhǎng)短時(shí)記憶 LSTM

另一個(gè)專門針對(duì)間隔信息傳遞的架構(gòu)設(shè)計(jì)是長(zhǎng)短時(shí)記憶 Long short-term memory,其與 GRU 在實(shí)現(xiàn)中最顯著的區(qū)別是 C<t> ≠ a<t>富蓄,其主要組成部分及判斷邏輯如下:

Forget Gate - 對(duì)應(yīng)下圖中最左側(cè)的邏輯門剩燥,其通過(guò)對(duì)前一個(gè)時(shí)間步傳遞過(guò)來(lái)的激活信息 a<t-1> 和當(dāng)前時(shí)間步的輸入 x<t> 的組合信息進(jìn)行一個(gè)邏輯激活來(lái)生成一個(gè)所有元素處于 0 - 1 之間的向量 Γf = σ(Wf [a<t-1>, x<t>] + bf),再通過(guò)這個(gè)向量來(lái)與從前一個(gè)時(shí)間步傳遞過(guò)來(lái)的長(zhǎng)期記憶 C<t-1> 進(jìn)行逐個(gè)元素的乘積來(lái)判斷 C<t-1> 中有哪些是需要忘記的 Γf * C<t-1>立倍,以此完成對(duì)于長(zhǎng)期記憶的部分更新

Use Gate - 對(duì)應(yīng)下圖中最中間部分的由一個(gè) σ 激活判斷和一個(gè) tanh 激活構(gòu)成的邏輯門灭红,其結(jié)合前一個(gè)時(shí)間步傳遞過(guò)來(lái)的激活信息 a<t-1> 和當(dāng)前時(shí)間步的輸入信息 x<t> 來(lái)判斷如何進(jìn)一步更新從前一個(gè)時(shí)間步傳遞過(guò)來(lái)的長(zhǎng)期記憶 C<t-1>侣滩,其實(shí)現(xiàn)原理為:

  • 根據(jù) ?<t> = tanh(Wc [ a<t-1>, x<t>] + bc) 來(lái)計(jì)算一個(gè)潛在的可以加入長(zhǎng)期記憶的儲(chǔ)備信息

  • 再利用 Γu = σ(Wu [a<t-1>, x<t>] + bu) 進(jìn)一步同 ?<t> 通過(guò)元素相乘判斷這個(gè)儲(chǔ)備信息中有多少可以被加入到長(zhǎng)期記憶中

最后結(jié)合前兩個(gè)邏輯門的工作成果,最終此時(shí)間步的長(zhǎng)期記憶為:C<t> = Γu * ?<t> + Γf * C<t-1>

Output Gate - 對(duì)應(yīng)下圖中最右側(cè)部分的由一個(gè) σ 激活判斷和一個(gè) tanh 激活構(gòu)成的邏輯門变擒,其主要職責(zé)為根據(jù)前一個(gè)時(shí)間步傳遞過(guò)來(lái)的激活信息 a<t-1> 和當(dāng)前時(shí)間步的輸入信息 x<t> 來(lái)判斷本時(shí)間步的長(zhǎng)期記憶的激活信息 C<t> 有哪些是需要進(jìn)行輸出的君珠,相應(yīng)的計(jì)算公式為:

  • Γo = σ(Wo [a<t-1>, x<t>] + bo)

  • a<t> = Γo * tanh(C<t>)

LSTM module, from Colah's blog in the reference

在文獻(xiàn)中 C<t-1> 和 C<t> 常被稱為 cell state 或 long term memory,而上一個(gè)時(shí)間步的激活結(jié)果 a<t-1> 則被稱為 working memory娇斑。

在實(shí)際使用中由于 GRU 的實(shí)現(xiàn)更加簡(jiǎn)潔葛躏,因此也更加適合規(guī)模化悠菜,但 LSTM 由于采用了 3 個(gè)邏輯門因而更加的靈活舰攒,并不能簡(jiǎn)單的評(píng)價(jià)哪一個(gè)單元優(yōu)于另外一個(gè),需要根據(jù)應(yīng)用具體選擇悔醋。

雙向 RNN

前面已經(jīng)講到在詞匯判斷時(shí)摩窃,單向 RNN 在某一個(gè)時(shí)間步只能利用其之前的時(shí)間步的信息,而這經(jīng)常是不夠的芬骄,雙向 RNN 就是為了解決這個(gè)問(wèn)題而出現(xiàn)的猾愿。在雙向 RNN 中輸出預(yù)測(cè)結(jié)合了前向傳播和后向傳播的激活信息,二者共同參與輸出判斷账阻。

Bi-directional RNN

但 BRNN 的一個(gè)重要缺陷就是模型需要整個(gè)序列的信息才能做出判斷蒂秘,這在諸如實(shí)時(shí)語(yǔ)音識(shí)別類的應(yīng)用中就不太適用。

Deep RNNs

如同標(biāo)準(zhǔn)的神經(jīng)網(wǎng)絡(luò)一樣淘太,我們可以把前面的標(biāo)準(zhǔn) RNN 單元姻僧、GRU 單元、LSTM 單元和 BRNN 單元層疊在一起構(gòu)成深度更深的 DRNN 網(wǎng)絡(luò)蒲牧,但由于時(shí)間序列的存在撇贺,一般 3 層的 DRNN 就已經(jīng)算是比較復(fù)雜的架構(gòu)了。

這里Andrew 為了區(qū)分不同的層冰抢,在注釋中用 [ ] 添加了層數(shù)松嘶,與標(biāo)準(zhǔn) RNN 單元一致的是在同一層中的參數(shù)是相同的。

DRNN with 3 hidden layers

RNN in TensorFlow

在 TensorFlow 中挎扰,在構(gòu)建 RNN 時(shí)有兩個(gè)函數(shù):tf.nn.rnn 和 tf.nn.dynamic_rnn翠订,這兩個(gè)函數(shù)的區(qū)別是 tf.nn.rnn 創(chuàng)建的是一個(gè)固定時(shí)間步的非展開(kāi)狀態(tài)的 RNN 計(jì)算圖,因此其要求每一個(gè)批次的輸入必須具有相同的步長(zhǎng)遵倦,而 tf.nn.dynamic_rnn 中不同批次的長(zhǎng)度則可以不同尽超,因此在可能的情況下盡量選擇后者。

RNN Cells & Wrappers & Layers

RNN 的基本構(gòu)成單元是一系列的 RNN骇吭,GRU 和 LSTM 單元橙弱,這一部分很多不同的參考來(lái)源對(duì)于 cell 和 unit 并沒(méi)有嚴(yán)格的定義歧寺。在 TensorFlow 中 cell 本身可以包含多個(gè)基本的 LSTM燥狰,GRU 或 RNN 單元棘脐,例如在 BasicLSTMCell 定義中有一個(gè)參數(shù) num_units 就是定義一個(gè)大的、處于同一層中的 LSTM cell 里可以包含多少個(gè)基本的 LSTM 單元龙致,并列的多個(gè)(取決于時(shí)間步的多少) LSTM cell 構(gòu)成一個(gè) LSTM 層蛀缝,在此基礎(chǔ)上可以通過(guò) MultiRNNCell 定義多個(gè) LSTM 層。

  • BasicRNNCell – A vanilla RNN cell.
  • GRUCell – A Gated Recurrent Unit cell.
  • BasicLSTMCell – An LSTM cell based on Recurrent Neural Network Regularization. No peephole connection or cell clipping.
  • LSTMCell – A more complex LSTM cell that allows for optional peephole connections and cell clipping.
  • MultiRNNCell – A wrapper to combine multiple cells into a multi-layer cell.
  • DropoutWrapper – A wrapper to add dropout to input and/or output connections of a cell.
cell = tf.contrib.rnn.BasicLSTMCell(num_units=64, state_is_tuple=True) # 包含 64 個(gè) LSTM 基本單元
cell = tf.contrib.rnn.DropoutWrapper(cell=cell, output_keep_prob=0.5)
cell = tf.contrib.rnn.MultiRNNCell(cells=[cell] * 4, state_is_tuple=True) # 4 個(gè) LSTM 層

在完成基本單元構(gòu)造后目代,推薦使用 dynamic_rnn 來(lái)構(gòu)造計(jì)算圖屈梁,其性能要優(yōu)于 static_rnn:

outputs, state = tf.nn.dynamic_rnn(cell=cell, inputs=data, dtype=tf.float32) 
#根據(jù) inputs 中的時(shí)間步來(lái)展開(kāi)構(gòu)造計(jì)算圖

在 dynamic_rnn 中還有一個(gè)參數(shù) sequence_length,其需要指定的是在同一批次的輸入中因?yàn)殚L(zhǎng)度不同而采用 padding 時(shí)榛了,每一個(gè)序列在未添加 padding 時(shí)的時(shí)間步長(zhǎng)在讶,這點(diǎn)在文檔中的解釋是含糊的。

參考閱讀

  1. The Unreasonable Effectiveness of Recurrent Neural Networks

  2. Understanding LSTM Networks

  3. A Beginner’s Guide to Recurrent Networks and LSTMs

  4. Exploring LSTMs

  5. Written Memories: Understanding, Deriving and Extending the LSTM

  6. Understanding LSTM in TensorFlow with MNIST

  7. RNNs in Tensorflow, a Practical Guide and Undocumented Features

  8. Understanding LSTM in Tensorflow(MNIST dataset)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末霜大,一起剝皮案震驚了整個(gè)濱河市构哺,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌战坤,老刑警劉巖曙强,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異途茫,居然都是意外死亡碟嘴,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門囊卜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)娜扇,“玉大人,你說(shuō)我怎么就攤上這事栅组「ぶ裕” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵笑窜,是天一觀的道長(zhǎng)致燥。 經(jīng)常有香客問(wèn)我,道長(zhǎng)排截,這世上最難降的妖魔是什么嫌蚤? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮断傲,結(jié)果婚禮上脱吱,老公的妹妹穿的比我還像新娘。我一直安慰自己认罩,他們只是感情好箱蝠,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般宦搬。 火紅的嫁衣襯著肌膚如雪牙瓢。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,842評(píng)論 1 290
  • 那天间校,我揣著相機(jī)與錄音矾克,去河邊找鬼。 笑死憔足,一個(gè)胖子當(dāng)著我的面吹牛胁附,可吹牛的內(nèi)容都是我干的欢顷。 我是一名探鬼主播呼寸,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼看尼!你這毒婦竟也來(lái)了揭绑?” 一聲冷哼從身側(cè)響起饼暑,我...
    開(kāi)封第一講書(shū)人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎洗做,沒(méi)想到半個(gè)月后弓叛,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡诚纸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年撰筷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片畦徘。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡毕籽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出井辆,到底是詐尸還是另有隱情关筒,我是刑警寧澤,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布杯缺,位于F島的核電站蒸播,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏萍肆。R本人自食惡果不足惜袍榆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望塘揣。 院中可真熱鬧包雀,春花似錦、人聲如沸亲铡。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至赞草,卻和暖如春讹堤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背房资。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留檀头,地道東北人轰异。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像暑始,于是被迫代替她去往敵國(guó)和親搭独。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349

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