使用Keras進行深度學習 RNN

2021-08-19 10:39:49 字數 1470 閱讀 5133

rnn---迴圈神經網路,在這裡主要將它用在處理與**序列資料方面.

1.rnn網路結構與原理詳解:

該圖的左邊是未展開的rnn模型,展開後的rnn模型在右邊詳細的進行了展示.rnn網路的最為重要的一點就是其具有時序性,該時序性在網路的具體的體現就是hi的一系列引數的設定,這些引數的含義就是在i時刻(對應時刻的記憶)的記憶.

輸入層到隱含層:

用公式表示rnn當前時刻的記憶為:

你會通過這個公式發現,其hi就是在i時刻的記憶,他的計算具體是由兩個部分組成的,其中前面的部分是輸入的值與權值的乘積,後面乙個部分是權值與前乙個時刻記憶的乘積。構成了當前時刻的輸出值.

隱含層到輸出層:

在隱含層到輸出層,我們使用softmax函式作為啟用函式,這個函式的作用就是**每乙個詞出現的概率,然後選擇其中最大的那乙個值(有時候還常常與交叉熵結合使用).

通過上面的處理過程,rnn就可以有效的處理時序資料,對每乙個輸入保留重要的資訊,理論上就能夠得到所有重要的資訊,進而綜合考慮所有的輸入去**輸出.

2.雙向rnn網路結構及原理詳解:

實際上,為什麼會產生雙向的rnn,這裡可以形象的說一下,如果我們把rnn的過程比作一部電視劇集,那麼如果我們突然的從中間挑出一集來看,肯定會看的一頭霧水,因為我們並不知道其前面的背景,所以會很不理解,這就可以比作rnn神經網路,我們從頭開始看電視劇集,把其中的重要的資訊儲存下來,這樣隨著劇請的發展,我們就可以看懂了所有的劇情,並且有時候還可以根據劇情來進行**.

但是吧,單向的rnn只能夠往乙個方向流動,恰好此時你又挑了一集電視劇集,但是這個人是啥性格,下場咋樣,單從前面的訊息是不能夠進行**的,但是如果你知道後面的劇情,那麼就非常容易了,這就是為啥引出雙向rnn。。

在上圖中,黃色的實線是從前向後流動的重要資訊,而黃色的虛線就是從後向前的重要資訊。

3.深層rnn網路結構:

深層的rnn結構,就是多了幾個隱藏層,當重要的資訊一次無法體現的時候,我們就可以採用增加隱藏層的方式,試圖使其變得更加複雜,那麼其就有了更加良好的表示資訊的能力.

4.keras對rnn的支援:

keras對rnn模型進行了封裝,呼叫起來是十分的方便。

recurrent模組中的rnn模型包含rnn,lstm,gru等模型。

rnn:全連線rnn模型

******rnn(units,activation='tanh',dropout=0.0,recurrent_dropout=0.0,return_sequences=false)

bidirectional(layer,merge_mode='concat',weights=none)

keras深度學習(二)

上一次,我學到了感知機,多層感知機,啟用函式等 寫出了第乙個keras 例項 import keras.models import sequential model sequential model.add dense 12,input dim 8,kernel initializer random...

Keras深度學習(四)

今天測試前幾天所提到的演算法 1.使用keras定義簡單的神經網路 from future import print function import numpy as np from keras.datasets import mnist from keras.models import seque...

深度學習之Keras

keras簡介 keras是乙個高層神經網路api,keras完全由python編寫而成,使用tensorflow theano及cntk作為後端。通過python指令碼檢視keras使用的後端 輸出結果 使用keras構建深度學習模型 1.定義模型 建立乙個序貫模型並新增配置層。2.編譯模型 指定...