我只是想看到我的输出到目前为止,但我无法让我的变量初始化,相同的功能在另一个笔记本中工作,但在这一个不起作用。我尝试了两种方法并不断获取:
FailedPreconditionError: Attempting to use uninitialized value Variable.
我使用的是1.2.1。
mnist = input_data.read_data_sets('./', one_hot=True)
n1=500
n2=300
nclasses=10
batchsize=100
def layers(data):
layer1={'weights':tf.Variable(tf.random_normal([784,n1])),
'bias':tf.Variable(tf.random_normal([n1]))}
layer2={'weights':tf.Variable(tf.random_normal([n1,n2])),
'bias':tf.Variable(tf.random_normal([n2]))}
output={'weights':tf.Variable(tf.random_normal([n2,nclasses])),
'bias':tf.Variable(tf.random_normal([nclasses]))}
l1=tf.add(tf.matmul(data,layer1['weights']),layer1['bias'])
l1=tf.nn.relu(l1)
l2=tf.add(tf.matmul(l1,layer2['weights']),layer2['bias'])
l2=tf.nn.relu(l2)
output=tf.add(tf.matmul(l2,output['weights']),output['bias'])
return output
session=tf.Session().
session.run(tf.global_variables_initializer())
result=session.run(layers(mnist.test.images))
print(type(result))
尝试过 -
with tf.Session() as sess:
session.run(tf.global_variables_initializer())
result=sess.run(layers(mnist.test.images))
print(type(result))
答案 0 :(得分:1)
您的问题是图表是在函数调用layers
中构建的。但是,在构建图形之前,您已初始化所有变量。
因此,你需要写
output_op = layers(mnist.test.images)
session.run(tf.global_variables_initializer())
result = session.run(output_op)
OP)
然后构造图形并且TensorFlow可以初始化所有变量。完整的工作示例:
import tensorflow as tf
import numpy as np
def fake_mnist():
return np.random.randn(1, 28 * 28)
n1 = 500
n2 = 300
nclasses = 10
batchsize = 100
def layers(data):
layer1 = {'weights': tf.Variable(tf.random_normal([784, n1])),
'bias': tf.Variable(tf.random_normal([n1]))}
layer2 = {'weights': tf.Variable(tf.random_normal([n1, n2])),
'bias': tf.Variable(tf.random_normal([n2]))}
output = {'weights': tf.Variable(tf.random_normal([n2, nclasses])),
'bias': tf.Variable(tf.random_normal([nclasses]))}
l1 = tf.add(tf.matmul(data, layer1['weights']), layer1['bias'])
l1 = tf.nn.relu(l1)
l2 = tf.add(tf.matmul(l1, layer2['weights']), layer2['bias'])
l2 = tf.nn.relu(l2)
output = tf.add(tf.matmul(l2, output['weights']), output['bias'])
return output
with tf.Session() as sess:
data_inpt = tf.placeholder(tf.float32)
output_op = layers(data_inpt)
sess.run(tf.global_variables_initializer())
result = sess.run(output_op, {data_inpt: fake_mnist()})
print(type(result))
print(result)
我非常怀疑,您的代码是在任何其他笔记本文件中运行的。我想在其他笔记本文件中你已经多次layers
执行了单元格,这样在tf.global_variables_initializer
的第二次调用中,图形中的变量已经存在。但是你发布的代码绝对不正确。
答案 1 :(得分:-1)
因为你提到代码在另一个笔记本上工作,所以它可能是版本问题,所以不要使用session.run(tf.global_variables_initializer())
,而是尝试session.run(tf.initialize_all_variables())
,btw tf.initialize_all_variables()目前已被弃用。< / p>