Tensorflow不接受向占位符提供的向量

时间:2019-02-21 06:55:56

标签: tensorflow

一个非常基本的错误。将向量提供给占位符时,即使大小与占位符相同,tensorflow也会引发错误。

import tensorflow as tf
import numpy as np

A = tf.constant(np.array([[1,2],[3,4]]))
B = tf.placeholder(tf.int32, shape = (2,1), name = 'B')
C = tf.Variable(tf.matmul(A,B), name='C')

temp = np.array([[1],[2]])

init = tf.global_variables_initializer()

with tf.Session() as sesh:
    sesh.run(init)
    print(sesh.run(C, feed_dict = { B : temp }))

1 个答案:

答案 0 :(得分:0)

您不应使用占位符初始化变量。错误由行sesh.run(init)引发。该行尝试通过张量tf.matmul(A,B)的值初始化变量C,但是如果不将值馈送到B,就无法评估该张量,这在tf.global_variables_initializer中无法实现。

如果替换

C = tf.Variable(tf.matmul(A,B), name='C')

C = tf.matmul(A,B, name='C')

代码按预期工作。

有效初始化变量的示例是:

v = tf.Variable(tf.random_uniform([2, 1], name='v'))

将变量v初始化为从均匀分布中选择的随机值矩阵。