【发布时间】:2020-06-13 13:34:58
【问题描述】:
我有这个在 tensorflow 1.0.1 中实现的遗留代码。 我想将当前的 LSTM 单元转换为双向 LSTM。
with tf.variable_scope("encoder_scope") as encoder_scope:
cell = contrib_rnn.LSTMCell(num_units=state_size, state_is_tuple=True)
cell = DtypeDropoutWrapper(cell=cell, output_keep_prob=tf_keep_probabiltiy, dtype=DTYPE)
cell = contrib_rnn.MultiRNNCell(cells=[cell] * num_lstm_layers, state_is_tuple=True)
encoder_cell = cell
encoder_outputs, last_encoder_state = tf.nn.dynamic_rnn(
cell=encoder_cell,
dtype=DTYPE,
sequence_length=encoder_sequence_lengths,
inputs=encoder_inputs,
)
我发现了一些例子。 https://riptutorial.com/tensorflow/example/17004/creating-a-bidirectional-lstm
但我无法通过引用它们将我的 LSTM 单元转换为双向 LSTM 单元。 在我的情况下应该在 state_below 中添加什么?
更新:除了上述问题,我需要澄清如何将以下解码器网络(dynamic_rnn_decoder)转换为使用双向 LSTM。 (文档没有提供任何线索)
with tf.variable_scope("decoder_scope") as decoder_scope:
decoder_cell = tf.contrib.rnn.LSTMCell(num_units=state_size)
decoder_cell = DtypeDropoutWrapper(cell=decoder_cell, output_keep_prob=tf_keep_probabiltiy, dtype=DTYPE)
decoder_cell = contrib_rnn.MultiRNNCell(cells=[decoder_cell] * num_lstm_layers, state_is_tuple=True)
# define decoder train netowrk
decoder_outputs_tr, _ , _ = dynamic_rnn_decoder(
cell=decoder_cell, # the cell function
decoder_fn= simple_decoder_fn_train(last_encoder_state, name=None),
inputs=decoder_inputs,
sequence_length=decoder_sequence_lengths,
parallel_iterations=None,
swap_memory=False,
time_major=False)
谁能解释一下?
【问题讨论】:
标签: python python-3.x tensorflow lstm