tensorflow何时更新for循环中的权重和偏差?
以下是来自tf&#39的github的代码。 mnist_softmax.py
for _ in range(1000):
batch_xs, batch_ys = mnist.train.next_batch(100)
sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})
sess.run()
时是否会更新它们?如果是这样,在这个程序中,是否意味着更新权重和偏差1000次?答案 0 :(得分:6)
train_step
时都会更新权重。Tensorflow通过创建计算网络输出所需的计算图来工作。每个基本操作,如矩阵乘法,加法,你能想到的任何东西都是这个计算图中的节点。在您关注的tensorflow mnist示例中,40-46的行定义了网络体系结构
网络代表一个简单的线性回归模型,使用y = W*x + b
进行预测(见第43行)。
接下来,您将配置网络的培训过程。该代码使用交叉熵作为最小化的损失函数(见第57行)。最小化是使用梯度下降算法完成的(见第59行)。
此时,您的网络已完全构建。现在,您需要运行这些节点,以便执行实际计算(直到此时才执行计算)。
在执行sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})
的循环中,tf计算train_step
的值,这会导致GradientDescentOptimizer尝试最小化cross_entropy
,这就是训练进展的方式。