擅长:python、mysql、java
<p>只有在构建过程中在同一个<code>tf.variable_scope</code>中使用<code>tf.get_variable</code>时,单元才会共享权重。一般来说,让堆叠的单元格共享权重是没有意义的,因此TensorFlow(特别是<code>tf.nn.rnn_cell.MultiRNNCell</code>)将为您调用的每个<code>tf.nn.rnn_cell.LSTMCell</code>创建不同的<code>tf.variable_scope</code>。因此,如果我正确理解你的问题,答案是
(1) 是;(2)否</p>
<p>要查看更多详细信息,请尝试以下代码:</p>
<pre><code>import tensorflow as tf
cells = [tf.nn.rnn_cell.LSTMCell(100) for _ in range(2)]
multi_rnn_cells = tf.nn.rnn_cell.MultiRNNCell(cells)
batch_size, max_time, dim = 1, 10, 2
rnn_inputs = tf.zeros(shape=(batch_size, max_time, dim))
dynamic_rnn = tf.nn.dynamic_rnn(multi_rnn_cells, rnn_inputs, dtype=tf.float32)
for variable in tf.trainable_variables(): print(variable)
</code></pre>
<p>您将在2个不同的<code>tf.variable_sope</code>中看到4个变量(每个单元1个内核和1个偏差)。你知道吗</p>
<p>当运行时,堆叠的LSTM在每个时间步中共享权重,即堆叠的RNN在时间上共享权重,但在空间上不共享。你知道吗</p>