ValueError:尝试共享变量rnn/multi_rnn_cell/cell_0/basic_lstm_cell/kernel [英] ValueError: Trying to share variable rnn/multi_rnn_cell/cell_0/basic_lstm_cell/kernel
问题描述
这是代码:
X = tf.placeholder(tf.float32, [batch_size, seq_len_1, 1], name='X')
labels = tf.placeholder(tf.float32, [None, alpha_size], name='labels')
rnn_cell = tf.contrib.rnn.BasicLSTMCell(512)
m_rnn_cell = tf.contrib.rnn.MultiRNNCell([rnn_cell] * 3, state_is_tuple=True)
pre_prediction, state = tf.nn.dynamic_rnn(m_rnn_cell, X, dtype=tf.float32)
这是完全错误:
ValueError::尝试共享变量rnn/multi_rnn_cell/cell_0/basic_lstm_cell/kernel,但指定了形状(1024、2048)并找到了形状(513、2048).
ValueError: Trying to share variable rnn/multi_rnn_cell/cell_0/basic_lstm_cell/kernel, but specified shape (1024, 2048) and found shape (513, 2048).
我正在使用GPU版本的tensorflow.
I'm using a GPU version of tensorflow.
推荐答案
升级到v1.2(tensorflow-gpu)时,我遇到了类似的问题.
我没有使用[rnn_cell]*3
,而是通过循环创建了3个rnn_cells
(stacked_rnn)(以便它们不共享变量),并为MultiRNNCell
提供了stacked_rnn
,问题就消失了.我不确定这是正确的方法.
I encountered a similar problem when I upgraded to v1.2 (tensorflow-gpu).
Instead of using [rnn_cell]*3
, I created 3 rnn_cells
(stacked_rnn) by a loop (so that they don't share variables) and fed MultiRNNCell
with stacked_rnn
and the problem goes away. I'm not sure it is the right way to do it.
stacked_rnn = []
for iiLyr in range(3):
stacked_rnn.append(tf.nn.rnn_cell.LSTMCell(num_units=512, state_is_tuple=True))
MultiLyr_cell = tf.nn.rnn_cell.MultiRNNCell(cells=stacked_rnn, state_is_tuple=True)
这篇关于ValueError:尝试共享变量rnn/multi_rnn_cell/cell_0/basic_lstm_cell/kernel的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!