';Multirncell';对象不可iterable Python Tensorflow

';Multirncell';对象不可iterable Python Tensorflow,python,python-3.x,tensorflow,tensorboard,Python,Python 3.x,Tensorflow,Tensorboard,我试图根据层向张力板添加重量和偏差。我尝试了以下方法: tf.reset_default_graph() X = tf.placeholder(tf.float32, [None, n_steps, n_inputs]) y = tf.placeholder(tf.float32, [None,n_outputs]) layers = [tf.contrib.rnn.LSTMCell(num_units=n_neurons,

我试图根据层向张力板添加重量和偏差。我尝试了以下方法:

tf.reset_default_graph()

X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])
y = tf.placeholder(tf.float32, [None,n_outputs])


layers = [tf.contrib.rnn.LSTMCell(num_units=n_neurons, 
                                 activation=tf.nn.leaky_relu, use_peepholes = True)
         for layer in range(n_layers)]
# for i, layer in enumerate(layers):
#     tf.summary.histogram('layer{0}'.format(i), tf.convert_to_tensor(layer))


multi_layer_cell = tf.contrib.rnn.MultiRNNCell(layers)
for index,one_lstm_cell in enumerate(multi_layer_cell):
    one_kernel, one_bias = one_lstm_cell.variables
    # I think TensorBoard handles summaries with the same name fine.
    tf.summary.histogram("Kernel", one_kernel)
    tf.summary.histogram("Bias", one_bias)
rnn_outputs, states = tf.nn.dynamic_rnn(multi_layer_cell, X, dtype=tf.float32)

stacked_rnn_outputs = tf.reshape(rnn_outputs, [-1, n_neurons]) 
stacked_outputs = tf.layers.dense(stacked_rnn_outputs, n_outputs)
outputs = tf.reshape(stacked_outputs, [-1, n_steps, n_outputs])
outputs = outputs[:,n_steps-1,:] # keep only last output of sequence
但我得到了以下错误:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-43-761df6e116a7> in <module>()
     44 
     45 multi_layer_cell = tf.contrib.rnn.MultiRNNCell(layers)
---> 46 for index,one_lstm_cell in enumerate(multi_layer_cell):
     47     one_kernel, one_bias = one_lstm_cell.variables
     48     # I think TensorBoard handles summaries with the same name fine.

TypeError: 'MultiRNNCell' object is not iterable
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
在()
44
45多层单元=tf.contrib.rnn.multirncell(层)
--->46对于索引,枚举中的一个单元格(多层单元格):
47一个内核,一个偏差=一个单元格变量
48#我认为TensorBoard可以处理同名的摘要。
TypeError:“MultiRNNCell”对象不可编辑
我想知道我错过了什么,这样我可以在tensorboard中添加可视化变量。求求你帮帮我。

确实不合适。对于您的情况,首先,在调用之前不会创建RNN变量,因此您应该尝试在调用之后检索它们。第二,通过
使用窥视孔
您拥有的不仅仅是内核变量和偏差变量。要检索它们,您可以从
多层单元格一起访问所有RNN变量。变量
或通过存储在
中的单元格对象访问每一层自己的集合:

multi_layer_cell = tf.contrib.rnn.MultiRNNCell(layers)
rnn_outputs, states = tf.nn.dynamic_rnn(multi_layer_cell, X, dtype=tf.float32)
for index, one_lstm_cell in enumerate(layers):
    one_kernel, one_bias, *one_peepholes = one_lstm_cell.variables
    tf.summary.histogram("Kernel", one_kernel)
    tf.summary.histogram("Bias", one_bias)

有人能告诉我我可能遗漏了什么,以便我能继续前进吗?我如何能在张力板上显示重量,以及输出是分层的还是其他的?先生,请告诉我。@JafferWilson好吧,那是另一回事,这取决于你到底想展示什么以及如何展示。用张量中的所有值做一个柱状图,在几张图之后,你会得到如图所示的东西。还有一个问题。我看到有三种不同的权重,即
w_f_diag
w_I_diag
w_o_diag
。这些权重中的哪一个应该考虑用于可视化,以便我能够做出坚定的决策,无论我的模型是否运行良好?此外,先生,我想知道我是否想看看我的LSTM模型在墙内或墙后发生了什么,有什么我可以看到的吗?就像实时工作一样,如何在我的多单元RNN模型中建立关联?先生,请告诉我。@JafferWilson在这种情况下,你每层有5个权重,内核、偏差和你提到的三个,它们是用于“窥视孔”(如果你不设置
use\u peephole=True
,它们将不会出现)。我想这些的命名遵循了关于的约定(参见“长短期记忆的变体”)。这是一个很好的关于如何使用直方图来判断你的训练是否有效的讨论。