我正在通过[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)
答案 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])
有两点需要注意:
tf.placeholder
未使用self.x_expand
。占位符用于提供来自用户的输入,但在这里看起来你真正想要的是重塑现有的提要
没有改变每个元素的形状,而是通过一次操作。
注意:我无法重现您看到的错误消息,可能是因为我们使用了不同版本的TensorFlow,并且最近版本中的错误消息报告发生了变化。我使用的是1.0.0。
答案 1 :(得分:0)
我认为你应该尝试:
self.x_expand = tf.reshape(self.input_x, [batch_size, num_classes,data_size]