输入到dynamic_rnn时的Tensorflow错误ValueError:无法为Tensor'占位符:0'提供shape(2,)的值,其形状为'(1,?)'

时间:2018-01-08 21:11:17

标签: python tensorflow recurrent-neural-network

我是tensorflow和python的新手。我想使用动态RNN来构造句子嵌入。我想使用可变长度序列。我会为每个句子嵌入它。我真的需要你的帮助。 这是我的代码的一部分。

graph = tf.Graph()
with graph.as_default():
x_data = tf.placeholder(tf.int32, [batch_size,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,reuse=tf.AUTO_REUSE)
    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)
with tf.Session(graph=graph) as sess:
      sess.run(tf.global_variables_initializer())
      #read_sent_data is a method that has as input my text corpus and return a list of arrays, each array represent the sentence with its words' ids
      input_data=read_sent_data(file1)#file1 is my corpus file
      for input_sent in input_data:
          #input_sent=tf.reshape(1,len(input_sent))
          print(sess.run(output,feed_dict={x_data:input_sent}))
          outputs.append(output)
      tf.get_variable_scope().reuse_variables()    
sess.close()    
print (outputs.eval())

当我运行我的代码时出现此错误:

  

ValueError:无法为Tensor'占位符:0'提供形状值(2,),其形状为'(1,?)'

制作人:

  

打印(sess.run(输出,feed_dict = {x_data:input_sent}))

我认为我的输入有问题,不是张量。我试着通过:input_sent=tf.reshape(1,len(input_sent))重塑它,但我收到了这个错误:

  

ValueError:Shape必须为1级,但“Reshape”的排名为0(op:   '重塑')输入形状:[],[]。

我感谢任何帮助。

0 个答案:

没有答案