Tensorflow를 MNIST 튜토리얼과 함께 사용하는 방법을 배우고 있지만 튜토리얼 시점에서 차단하고 있습니다.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, [None, 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"(바이어스)를 변경하는 방법을 이해하지 않습니다 여기에
은 코드가 제공됩니다? 각 배치에서 0으로 초기화되지만 이후에는? 코드에서 변경 될 부분이 전혀 보이지 않습니까?미리 감사드립니다.
와우 많은 감사! 나는 오늘 아침 이후로 이것을 줄이지 않고 있었다! 완전히 붙어 있었어. 대단히 감사합니다! –
기본 Optimizer 클래스 (https://www.tensorflow.org/versions/r0.11/api_docs/python/train.html#Optimizer)의 문서를 보면 minimize()가 두 작업을 결합한 것을 볼 수 있습니다 . 그것은 가중치와 편향에 대한 그라디언트를 계산하고이를 그래프의 각 가중치와 바이어스에 적용합니다. GradientDescentOptimizer는 기본 SGD 알고리즘을 구현하는 Optimizer의 하위 클래스입니다. –