当我重塑张量时,tf.reshape
以及<Tensor>.shape
无法推断出形状。
如果我正确理解了这个问题:https://github.com/tensorflow/tensorflow/issues/3311,它应该已经修复。
任何人都可以帮助我,我可能会遗漏某些东西吗?
import tensorflow as tf
sess = tf.InteractiveSession()
m = 100
n = 300
x = 123
y = 456
a = tf.get_variable(dtype=tf.int32, shape=[m, n, x], name="a")
b = tf.get_variable(dtype=tf.int32, shape=[m, n, y], name="b")
print(a.shape) # => (100, 300, 123)
print(b.shape) # => (100, 300, 456)
print(tf.shape(a)) # => Tensor("Shape_4:0", shape=(3,), dtype=int32)
print(tf.shape(b)) # => Tensor("Shape_5:0", shape=(3,), dtype=int32
c = tf.concat([a, b], axis=-1)
print(c.shape) # => (100, 300, 579)
print(tf.shape(c)) # = >Tensor("Shape:0", shape=(3,), dtype=int32)
s = tf.shape(c)
cc = tf.reshape(c, [s[0]*s[1], -1])
print(cc.shape) # => (?, ?)
print(tf.shape(cc)) # => Tensor("Shape_3:0", shape=(2,), dtype=int32)
答案 0 :(得分:1)
我想你想用:
s = c.get_shape().as_list()
或
s = c.shape.as_list()
我自己从未真正使用tf.shape()
,但当我使用上述内容时,我会收到正确的形状(30000, 579)