Tôi đang xem hướng dẫn "MNIST For ML Beginners" của TensorFlow, và tôi muốn in ra tổn thất đào tạo sau mỗi bước đào tạo.In ấn sự mất mát trong quá trình đào tạo TensorFlow
vòng đào tạo của tôi hiện trông như thế này:
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})
Bây giờ, train_step
được định nghĩa là:
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)
đâu cross_entropy
là sự mất mát mà tôi muốn in ra:
cross_entropy = -tf.reduce_sum(y_ * tf.log(y))
Một cách để in này sẽ được tính toán một cách rõ ràng cross_entropy
trong vòng lặp đào tạo:
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})
bây giờ tôi có hai câu hỏi về vấn đề này:
Cho rằng
cross_entropy
đã được tính toán trongsess.run(train_step, ...)
, có vẻ như không hiệu quả để tính toán nó hai lần, đòi hỏi phải gấp đôi số chuyển tiếp của tất cả các dữ liệu đào tạo. Có cách nào để truy cập vào giá trị củacross_entropy
khi được tính trong thời giansess.run(train_step, ...)
không?Tôi làm cách nào để in
tf.Variable
? Sử dụngstr(cross_entropy)
cho tôi một lỗi ...
Cảm ơn bạn!
Cảm ơn. Vì vậy, mỗi khi tôi gọi 'sess.run ([train_step, cross_entropy])', nó vẫn chỉ tính toán 'cross_entropy' một lần, đúng không? Nó không làm thêm một chuyển tiếp cho mỗi biến tôi vượt qua? – Karnivaurus
Đúng vậy - nó thực hiện cùng một biểu đồ con chính xác (vì 'cross_entropy' đã được tính như là một phần của bước huấn luyện), và chỉ thêm một nút phụ để lấy giá trị của' cross_entropy' trở lại chương trình Python của bạn. – mrry
Cảm ơn.Là một điểm phụ, sau khi cập nhật mã của tôi như bạn đã đề xuất, giá trị của 'cross_entropy', tính trung bình, giảm trên vòng lặp. Tuy nhiên, đôi khi nó thực sự tăng từ một lần đào tạo đến lần tiếp theo. Điều này xảy ra cho một loạt các kích thước bước trong độ dốc. Đây có phải là dự kiến không? Sẽ không phải mất luôn luôn giảm sau mỗi lần lặp lại, bởi vì bạn đang di chuyển các trọng số theo một hướng mà nên giảm tổn thất này? Biểu đồ của sự mất mát và lặp lại là ở đây: http://i.stack.imgur.com/f8B80.png – Karnivaurus