Tensorflow中GNMT的实现采取多层双向LSTM构建,构建基本过程如下:
训练过程:
encoder:
- 双向(仅第一层双向):
bi_output, bi_state = tf.nn.bidirectional_dynamic_rnn(
tf.nn.bidirectional_dynamic_rnn(fw_cell,bw_cell,inputs)
其中fw_cell、bw_cell和下方组装的MultiRNNCell相同,inputs=encoder_emb_inp(词嵌入),而bi_output作为dynamic_rnn的参数,bi_state和encoder_state组成最终输入的encoder_state
- 单向(其它层)
单层:
(1) tf.contrib.rnn.BasicLSTMCell(num_units,forget_bias=forget_bias)
(2) tf.contrib.rnn.GRUCell(num_units)
(3) tf.contrib.rnn.LayerNormBasicLSTMCell