Tensorflow错误:变量gru_def / rnn / gru_cell / gates / kernel不存在,或者未使用tf.get_variable()创建

时间:2018-01-07 12:44:34

标签: python tensorflow neural-network deep-learning recurrent-neural-network

这是我第一次使用python和tensorflow进行编程。我想使用动态RNN来构造句子嵌入。 这是我在jupyter中编写的代码的一部分。

graph = tf.Graph()
x_data = tf.placeholder(tf.int32, [None,None])
sequence_lengths = tf.placeholder(tf.int32, shape=[None])
embedding_mat = tf.Variable(tf.random_uniform([vocab_size,embedding_size],  0.0, 1.0),dtype=tf.float32)
embedding_output = tf.nn.embedding_lookup(embedding_mat,x_data)

with tf.variable_scope('cell_def'):
    cell =tf.contrib.rnn.GRUCell(num_units = rnn_size)
    hidden_state_in =cell.zero_state(batch_size,tf.float32) 
with tf.variable_scope('gru_def'):
    output, state = tf.nn.dynamic_rnn(cell,embedding_output,initial_state=hidden_state_in,dtype=tf.float32,sequence_length=sequence_lengths)

with tf.Session(graph=graph) as sess:
    sess.run(tf.global_variables_initializer())
    feed_dict = {x_data:embedding_output}
    sess.run(output,feed_dict=feed_dict)
    #tf.get_variable_scope().reuse_variables()    
sess.close()    

当我运行我的代码时,我收到此错误:

  

变量gru_def / rnn / gru_cell / gates / kernel已经存在,不允许。   您是不是要在VarScope中设置reuse = True或reuse = tf.AUTO_REUSE?   最初定义于:

我尝试通过调用tf.get_variable_scope().reuse_variables()将重用标志设置为True来解决此问题,但错误仍然存​​在。

然后,我在 GRUCell 中添加重复使用参数,但是我有这样的错误:

  

ValueError:变量gru_def / rnn / gru_cell / gates / kernel不存在,   或者不是用tf.get_variable()创建的。你的意思是设置   在VarScope中重用= tf.AUTO_REUSE?

cell = tf.contrib.rnn.GRUCell(num_units = rnn_size,reuse=True)
你能帮帮我吗?

1 个答案:

答案 0 :(得分:1)

在tensorflow 1.3 +中:

cell = tf.contrib.rnn.GRUCell(num_units=rnn_size, reuse=tf.AUTO_REUSE)