檢查狀態
艾伯特(http://www.aibbt.com/)國內第一家人工智能門戶在運行sess.run
函數時,要在代碼中明確其需要獲取的兩個值:[train_op, loss]
。
for step in xrange(FLAGS.max_steps):
feed_dict = fill_feed_dict(data_sets.train,
images_placeholder,
labels_placeholder)
_, loss_value = sess.run([train_op, loss],
feed_dict=feed_dict)
因爲要獲取這兩個值,sess.run()
會返回一個有兩個元素的元組。其中每一個Tensor
對象,對應了返回的元組中的numpy數組,而這些數組中包含了當前這步訓練中對應Tensor的值。由於train_op
並不會產生輸出,其在返回的元祖中的對應元素就是None
,所以會被拋棄。但是,如果模型在訓練中出現偏差,loss
Tensor的值可能會變成NaN,所以我們要獲取它的值,並記錄下來。
http://www.aibbt.com/a/16370.html
假設訓練一切正常,沒有出現NaN,訓練循環會每隔100個訓練步驟,就打印一行簡單的狀態文本,告知用戶當前的訓練狀態。
if step % 100 == 0:
print 'Step %d: loss = %.2f (%.3f sec)' % (step, loss_value, duration)