TensorFlow训练MNIST数据集提示参数未初始化

在运行TensorFlow的相关代码时出现错误

环境:python3.7
tensorflow1.14.0

'''
该部分内容为TensorFlow进阶指南
32页内容
时间:2021年3月30日
训练MNIST数据集
'''

import LeNet_5.input_data as inputdata
import tensorflow as tf

sess=tf.compat.v1.Session()
mnist=inputdata.read_data_sets('MNIST',one_hot=True)
# 一个等待输入的结点,将这个节点设置为float,并设定形状为【None]
x=tf.placeholder("float",[None,784])
#用Variable定义两个变量
w=tf.Variable(tf.zeros([784,10]))
b=tf.Variable(tf.zeros([10]))
#计算softmax值
y=tf.nn.softmax(tf.matmul(x,w)+b)
#一个等待输入的节点。。。
y_=tf.compat.v1.placeholder("float",[None,10])
#定义一个交叉熵
cross_entropy=-tf.reduce_sum(y_*tf.math.log(y))
#梯度下降法创建一个优化器
train_step=tf.compat.v1.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)
#使用循环进行训练
init=tf.compat.v1.global_variables_initializer()
for i in range(3000):
    batch_xs,batch_ys=mnist.train.next_batch(100)
    feed_dict={x : batch_xs,y_ : batch_ys}

    sess.run(train_step,feed_dict)
#评估训练的精度如何
correct_prediction=tf.equal(tf.arg_max(y,1),tf.arg_max(y_,1))
accuracy=tf.reduce_mean(tf.cast(correct_prediction,"float"))
#输出测试数据集的正确率
print(sess.run(accuracy,feed_dict={x:mnist.test.images,y_:mnist.test.labels}))

错误如下:

tensorflow.python.framework.errors_impl.FailedPreconditionError: Attempting to use uninitialized value Variable

通过错误描述可以看出原因是没有初始化参数,但是明明有init=tf.compat.v1.global_variables_initializer()初始化的语句,最后发现是少了一句sess.run(init),注意不要放错位置,正确代码如下

'''
该部分内容为TensorFlow进阶指南
32页内容
时间:2021年3月30日
训练MNIST数据集
'''

import LeNet_5.input_data as inputdata
import tensorflow as tf

sess=tf.compat.v1.Session()
mnist=inputdata.read_data_sets('MNIST',one_hot=True)
# 一个等待输入的结点,将这个节点设置为float,并设定形状为【None]
x=tf.placeholder("float",[None,784])
#用Variable定义两个变量
w=tf.Variable(tf.zeros([784,10]))
b=tf.Variable(tf.zeros([10]))
#计算softmax值
y=tf.nn.softmax(tf.matmul(x,w)+b)
#一个等待输入的节点。。。
y_=tf.compat.v1.placeholder("float",[None,10])
#定义一个交叉熵
cross_entropy=-tf.reduce_sum(y_*tf.math.log(y))
#梯度下降法创建一个优化器
train_step=tf.compat.v1.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)
#使用循环进行训练
init=tf.compat.v1.global_variables_initializer()
sess.run(init)
for i in range(3000):
    batch_xs,batch_ys=mnist.train.next_batch(100)
    feed_dict={x : batch_xs,y_ : batch_ys}

    sess.run(train_step,feed_dict)
#评估训练的精度如何
correct_prediction=tf.equal(tf.arg_max(y,1),tf.arg_max(y_,1))
accuracy=tf.reduce_mean(tf.cast(correct_prediction,"float"))
#输出测试数据集的正确率
print(sess.run(accuracy,feed_dict={x:mnist.test.images,y_:mnist.test.labels}))

运行结果如下:

0.9214

如果对你有帮助,点个赞哟😊😊😊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值