Я смотрю учебник TensorFlow "MNIST For ML Beginners", и я хочу распечатать потерю обучения после каждого этапа обучения.
Мой цикл тренировки в настоящее время выглядит следующим образом:
for i in range(100):
batch_xs, batch_ys = mnist.train.next_batch(100)
sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})
Теперь train_step определяется как:
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)
Где cross_entropy - потеря, которую я хочу распечатать:
cross_entropy = -tf.reduce_sum(y_ * tf.log(y))
Одним из способов распечатать это было бы явное вычисление cross_entropy в цикле обучения:
for i in range(100):
batch_xs, batch_ys = mnist.train.next_batch(100)
cross_entropy = -tf.reduce_sum(y_ * tf.log(y))
print 'loss = ' + str(cross_entropy)
sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})
Теперь у меня есть два вопроса:
-
Учитывая, что
cross_entropyуже вычисляется во времяsess.run(train_step, ...), представляется неэффективным его вычислять дважды, требуя в два раза больше передовых проходов всех данных обучения. Есть ли способ получить доступ к значениюcross_entropy, когда он был вычислен во времяsess.run(train_step, ...)? -
Как мне даже распечатать
tf.Variable? Использованиеstr(cross_entropy)дает мне ошибку...
Спасибо!