簡體   English   中英

如何使用tf.session.run()進行測試(不更新網絡參數)?

[英]How to use tf.session.run() for testing (not updating network's parameters)?

通常我使用tf.session.run()來訓練我的網絡,並使用eval()來獲得測試的准確性或丟失。 但是我看到人們也使用session.run()獲取測試結果,這對我來說很奇怪。 我認為tf.session.run()僅用於培訓,而不是測試。

在tf.session.run()下有什么秘密我不知道嗎?

非常感謝你!

tf.session.run()意味着運行一個或多個TF操作,或評估TF張量,甚至可能混合這兩個類別。

當調用張量時,它基本上就像eval()一樣評估它。 您可以使用sess.run(train_op, feed_dict=train_data)將其用於訓練,這將更新您的變量值,因為這就是train_op的作用。 但是,如果你調用sess.run(accuracy, feed_dict=data) ,當輸入值是data給出的值時,無論是訓練,驗證還是測試數據,它都會評估accuracy張量的值,它會不更改變量值,因為您只是評估張量,而不是運行更改變量值的操作。

所以tf.session.run()比你想象的要廣泛得多,這是通常的方式進行推理或評估你的表現,即使在測試時!

您甚至可以同時執行多項操作,這樣可以避免在同一輸入上多次執行正向傳遞:

_, loss_value, accuracy_value = sess.run([train_op, loss_tensor, accuracy_tensor], feed_dict=data)
print('Loss value: %f' % loss_value)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM