创建具有动态形状的张量变量

时间:2017-09-23 18:13:35

标签: python tensorflow

我是tensorflow的新手。我有一个张量score,我正在尝试创建一个形状为score.shape[0]的张量变量。

score = tf.constant(np.array([[10, 0, -5], [4, 3, 0], [-3, 0, 11]]), 
dtype=tf.float32)
v = tf.Variable(tf.zeros(tf.shape(score)[0]))

但我收到错误:ValueError: Shape must be rank 1 but is rank 0 for 'zeros_2' (op: 'Fill') with input shapes: [], [].。想知道我哪里出错了。

1 个答案:

答案 0 :(得分:0)

您可以使用score.shape[0]获取score张量的第一个维度:

sess = tf.InteractiveSession()
score = tf.constant(np.array([[10, 0, -5], [4, 3, 0], [-3, 0, 11]]),dtype=tf.float32)
v = tf.Variable(tf.zeros(score.shape[0]))

tf.global_variables_initializer().run()
v.eval()
# array([ 0.,  0.,  0.], dtype=float32)

tf.shape返回张量,需要先进行评估才能使用它:

sess = tf.InteractiveSession()
score = tf.constant(np.array([[10, 0, -5], [4, 3, 0], [-3, 0, 11]]),dtype=tf.float32)

v = tf.Variable(tf.zeros(tf.shape(score).eval()[0]))

tf.global_variables_initializer().run()
v.eval()
# array([ 0.,  0.,  0.], dtype=float32)