单层
时间序列展开表示:
image.png
公式表示:
image.png
这里的[S1t→;S2t→]做的是一个拼接,如果他们都是1000维的,拼接在一起就是2000维的了。
双向RNN需要的内存是单向RNN的两倍,因为在同一时间点,双向RNN需要保存两个方向上的权重参数,在分类的时候,需要同时输入两个隐藏层输出的信息。
举例表示:
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.png
公式表示:
image.png
结构表示:
image.png
程序表示:
(暂无)
网友评论