雙向RNN理解筆記

單層

時間序列展開表示python

image.png

公式表示3d

image.png

這裏的[S1t→;S2t→]作的是一個拼接,若是他們都是1000維的,拼接在一塊兒就是2000維的了。 雙向RNN須要的內存是單向RNN的兩倍,由於在同一時間點,雙向RNN須要保存兩個方向上的權重參數,在分類的時候,須要同時輸入兩個隱藏層輸出的信息。code

舉例表示blog

image.png

image.png

程序表示內存

n是很是類似的.
定義前向和反向rnn_cell
定義前向和反向rnn_cell的初始狀態
準備好序列
調用bidirectional_dynamic_rnn
import tensorflow as tf
from tensorflow.contrib import rnn
cell_fw = rnn.LSTMCell(10)
cell_bw = rnn.LSTMCell(10)
initial_state_fw = cell_fw.zero_state(batch_size)
initial_state_bw = cell_bw.zero_state(batch_size)
seq = ...
seq_length = ...
(outputs, states)=tf.nn.bidirectional_dynamic_rnn(cell_fw, cell_bw, seq,
 seq_length, initial_state_fw,initial_state_bw)
out = tf.concat(outputs, 2)

多層

時間序列展開表示image.png image.pngget

公式表示input

image.png

結構表示it

image.png

程序表示io

def get_mul_cell(hidden_dim, num_layers):
            # 建立多層lstm
            def get_en_cell(hidden_dim):
                # 建立單個lstm
                enc_base_cell = tf.nn.rnn_cell.BasicLSTMCell(hidden_dim, forget_bias=1.0)
                return enc_base_cell
            return tf.nn.rnn_cell.MultiRNNCell([get_en_cell(hidden_dim) for _ in range(num_layers)])


        with tf.variable_scope("encoder"):
            # 構建雙向lstm
            encode_cell_fw = get_mul_cell(self.config.hidden_dim, self.config.num_layers)
            encode_cell_bw = get_mul_cell(self.config.hidden_dim, self.config.num_layers)
            bi_encoder_output, bi_encoder_state = tf.nn.bidirectional_dynamic_rnn(  cell_fw=encode_cell_fw,
                                                                                    cell_bw=encode_cell_bw,
                                                                                    inputs=embed_en_seqs,
                                                                                    sequence_length=self.en_length,
                                                                                    dtype=tf.float32,
                                                                                    time_major=False)
相關文章
相關標籤/搜索