Multiple RNN in tensorflow
我正在尝试在TensorFlow中使用不带MultiRNNCell的2层深度RNN,我的意思是将1layer的输出用作2layer的输入,如下所示:
1 2 3 4 | cell1 = tf.contrib.rnn.LSTMCell(num_filters, state_is_tuple=True) rnn_outputs1, _ = tf.nn.dynamic_rnn(cell1, inputs, dtype = tf.float32) cell2 = tf.contrib.rnn.LSTMCell(num_filters, state_is_tuple=True) rnn_outputs2, _ = tf.nn.dynamic_rnn(cell2, rnn_outputs1, dtype = tf.float32) |
但是出现以下错误:"试图让第二个RNNCell使用已经具有权重的变量作用域的权重"
我不想在cell2中重用cell1的权重,我想要两个不同的层,因为我需要每一层的输出。我该怎么办?
您可以将
例如通过显式地执行
1 2 3 4 5 6 | cell1 = tf.contrib.rnn.LSTMCell(num_filters, state_is_tuple=True) with tf.variable_scope("rnn1"): rnn_outputs1, _ = tf.nn.dynamic_rnn(cell1, inputs, dtype = tf.float32) cell2 = tf.contrib.rnn.LSTMCell(num_filters, state_is_tuple=True) with tf.variable_scope("rnn2"): rnn_outputs2, _ = tf.nn.dynamic_rnn(cell2, rnn_outputs1, dtype = tf.float32) |
或使用
1 2 3 4 | cell1 = tf.contrib.rnn.LSTMCell(num_filters, state_is_tuple=True) rnn_outputs1, _ = tf.nn.dynamic_rnn(cell1, inputs, dtype=tf.float32, scope='rnn1') cell2 = tf.contrib.rnn.LSTMCell(num_filters, state_is_tuple=True) rnn_outputs2, _ = tf.nn.dynamic_rnn(cell2, rnn_outputs1, dtype=tf.float32, scope='rnn2') |