Tensorflow:我应该如何将行占位符重新整形为列占位符

时间:2017-12-11 21:51:16

标签: python multidimensional-array tensorflow

我想将行占位符(例如[1, 2])转换为列占位符,例如[[1], [2]]

y = tf.placeholder(tf.int32, shape=[None], name='target')
y = tf.reshape(y, (y.shape[0], 1))

init = tf.global_variables_initializer()
with tf.Session() as sess:
    init.run()
    print(sess.run(y, feed_dict={y:[1,2]}))

但是我收到了一个错误:

TypeError: Failed to convert object of type <class 'tuple'> to Tensor. Contents: (Dimension(None), 1). Consider casting elements to a supported type.

问题在于y.shape[0]的用法。 y的维度定义为None。我也尝试了tf.shape(y),但效果不佳。

2 个答案:

答案 0 :(得分:0)

我不确定你的意思,但你不能在运行时改变tensorflow中节点的形状。因此,当目标被定义为[?]占位符时,它将保持不变。 你可以做的是使用tf.expand_dims函数将其转换为新的张量(它不会是占位符!),如已经建议的那样。这意味着你仍然需要输入[?]数组,但是你可以在计算中使用重新形成的张量。 y = tf.placeholder(tf.int32,shape = [None],name ='target') z = tf.expand_dims(y,axis = 1)#另一个张量 使用tf.Session()作为sess:   tf.global_variables_initializer()。运行()   print(sess.run(z,feed_dict = {y:[1,2]}))

答案 1 :(得分:-1)

使用tf.expand_dims()

简单地将行添加到列中
y = tf.placeholder(tf.int32, shape=[None], name='target')
y = tf.expand_dims(y,axis=1)

但是,在输入数据时还有另一个问题,因为简单地向张量添加维度不会定义其形状,它只是添加一个额外的索引。这是您可以独立发布的另一个问题。