加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – Tensorflow MNIST(权重和偏差变量)

发布时间:2020-12-20 12:11:24 所属栏目:Python 来源:网络整理
导读:我正在学习如何使用Tensorflow和MNIST教程,但我在本教程的某个方面阻止了. 这是提供的代码: from tensorflow.examples.tutorials.mnist import input_dataimport tensorflow as tfmnist = input_data.read_data_sets("MNIST_data/",one_hot=True)x = tf.pla
我正在学习如何使用Tensorflow和MNIST教程,但我在本教程的某个方面阻止了.

这是提供的代码:

from tensorflow.examples.tutorials.mnist import input_data
import tensorflow as tf

mnist = 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更新变量的值.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读