tf.nn.dynamic_rnn

时间:2017-06-21 10:42:27

标签: tensorflow

我正在尝试构建CNN + RNN模型,我收到以下错误。 任何帮助将不胜感激。

  

fc2具有形状(?,4096)

cell = tf.contrib.rnn.BasicLSTMCell(self.rnn_hidden_units)
stack = tf.contrib.rnn.MultiRNNCell([cell]*self.rnn_layers)
initial_state = cell.zero_state(self.batch_size, tf.float32)
initial_state = tf.identity(initial_state, name='initial_state')
outputs, _ = tf.nn.dynamic_rnn(stack, fc2,dtype=tf.float32)
  

文件“rcnn.py”,第182行,在模型中       输出,_ = tf.nn.dynamic_rnn(stack,[fc2],dtype = tf.float32)
    在dynamic_rnn中输入文件“/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/rnn.py”,第574行       D型= D型)
    在_dynamic_rnn_loop中输入文件“/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/rnn.py”,第637行       for flat_input中的input_)     文件“/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/rnn.py”,第637行,       for flat_input中的input_)     在with_rank_at_least中输入文件“/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/tensor_shape.py”,第649行       提高ValueError(“形状%s必须至少有排名%d”%(自我,等级))   ValueError:Shape(4096,?)的等级必须至少为3

1 个答案:

答案 0 :(得分:6)

从他的评论中复制@jdehesa的答案以获得更好的可见性:

错误似乎相当清楚,tf.nn.dynamic_rnn期望三维张量作为输入(即等级3),但fc2只有两个维度。 fc2的形状应该类似于(<batch_size>, <max_time>, <num_features>)(如果您通过(<max_time>, <batch_size>, <num_features>),则为time_major=True