这是提供的代码:
from tensorflow.examples.tutorials.mnist import input_dataimport tensorflow as tfmnist = input_data.read_data_sets("MNIST_data/",one_hot=True)x = tf.placeholder(tf.float32,[None,784])W = tf.Variable(tf.zeros([784,10]))b = tf.Variable(tf.zeros([10]))y = tf.nn.softmax(tf.matmul(x,W) + b)y_ = tf.placeholder(tf.float32,10])cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y),reduction_indices=[1]))train_step = tf.train.GradIEntDescentoptimizer(0.5).minimize(cross_entropy)saver = tf.train.Saver()init = tf.initialize_all_variables()sess = tf.Session()sess.run(init)for i in range(1000): batch_xs,batch_ys = mnist.train.next_batch(100) sess.run(train_step,Feed_dict={x: batch_xs,y_: batch_ys})
但实际上我根本不明白变量“W”(重量)和“b”(偏差)是如何在计算时改变的?
在每个批次上,它们初始化为零,但之后?
我根本没有看到他们将要改变的代码在哪里?
非常感谢你提前!
解决方法 TensorFlow variables将其状态从一次run()调用维持到下一次.在您的程序中,它们将初始化为零,然后在训练循环中逐步更新.更改变量值的代码由此行隐式创建:
train_step = tf.train.GradIEntDescentoptimizer(0.5).minimize(cross_entropy)
在TensorFlow中,tf.train.Optimizer
是创建用于更新变量的 *** 作的类,通常基于相对于那些变量的一些张量(例如,损失)的梯度.默认情况下,当你
调用Optimizer.minimize()
,TensorFlow创建 *** 作以更新给定张量(在本例中为cross_entropy)所依赖的所有变量.
当您调用sess.run(train_step)时,它会运行包含这些更新 *** 作的图形,因此指示TensorFlow更新变量的值.
总结以上是内存溢出为你收集整理的python – Tensorflow MNIST(权重和偏差变量)全部内容,希望文章能够帮你解决python – Tensorflow MNIST(权重和偏差变量)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)