Первоначально weights
и biases
инициализируются с использованием случайных значений. Когда вы запустите session.run([...])
, он оценит optimizer
, loss
и train_prediction
, и все переменные, от которых эти три могут зависеть.
Например, optimizer
зависит от loss
, loss
от train_labels
и logits
, logits
от weights
и biases
и т. Д. *
Когда он достигает конца (вычисляет все переменные), он обновит weights
и biases
согласно gradient descent
алгоритму (Чтобы понять, как работает тензорный поток, вам нужно понять алгоритм градиентного спуска Сначала проверьте эту ссылку ). Это называется «завершение 1 epoch
». В вашем случае вы использовали только 1 epoch
, поэтому будет только один проход. Точность тоже не будет такой хорошей. Для дальнейшей оптимизации используйте его, как показано ниже:
Пусть epochs=100
with tf.Session(graph=graph) as session::
tf.global_variables_initializer().run()
for i in range(epochs):
_, l, predictions = session.run([optimizer, loss, train_prediction])
Таким образом, session.run(...)
будет выполняться 100 раз, обновляя weights
и biases
в каждой итерации в соответствии с loss
.
Tensorflow обновит все те переменные, которые инициализируются с помощью tf.Variable().