在TF中重塑数组的问题

时间:2017-02-15 18:20:00

标签: python-3.x tensorflow

我正在通过[64,240] tf.array。 我想重塑一下[64,10,24] tf.array。 我尝试了各种不同的方法,但我总是得到同样的错误。

...提高ValueError(“形状%s必须具有等级%d”%(自我,等级)) ValueError:Shape(64,240)必须具有等级1

代码失败于: self.x_expand [i] = tf.reshape(self.input_x [i],[num_classes,data_size])

我想我犯了一个基本错误,希望有人可以指出它是什么......

代码的一个更大的片段是:

类CNN(对象):

def __init__(
  self, sequence_length, num_classes, data_size,
  filter_sizes, num_filters, l2_reg_lambda=0.0, batch_size=64):

    # Placeholders for input, output and dropout
    self.input_x = tf.placeholder(tf.int32, [batch_size, sequence_length], name="input_x")
    self.input_y = tf.placeholder(tf.float32, [batch_size, num_classes], name="input_y")
    self.dropout_keep_prob = tf.placeholder(tf.float32, name="dropout_keep_prob")

    with tf.device('/cpu:0'), tf.name_scope("reshaping"):
        self.x_expand = tf.placeholder(tf.int32, [batch_size, num_classes,data_size], name="expand_x")
        for i in range(batch_size):
            self.x_expand[i] = tf.reshape(self.input_x[i],[num_classes,data_size]) 
        self.x_expanded = tf.expand_dims(self.x_expanded, -1)

2 个答案:

答案 0 :(得分:0)

您似乎希望self.x_expand成为重塑的输入我认为以下内容可能更合适:

with tf.device('/cpu:0'), tf.name_scope("reshaping"):
    self.x_expand = tf.reshape(self.input_x, [batch_size, num_classes, data_size])

有两点需要注意:

  1. tf.placeholder未使用self.x_expand。占位符用于提供来自用户的输入,但在这里看起来你真正想要的是重塑现有的提要

  2. 没有改变每个元素的形状,而是通过一次操作。

  3. 注意:我无法重现您看到的错误消息,可能是因为我们使用了不同版本的TensorFlow,并且最近版本中的错误消息报告发生了变化。我使用的是1.0.0。

答案 1 :(得分:0)

我认为你应该尝试:



self.x_expand = tf.reshape(self.input_x, [batch_size, num_classes,data_size]