一个非常基本的错误。将向量提供给占位符时,即使大小与占位符相同,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 }))
答案 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初始化为从均匀分布中选择的随机值矩阵。