在使用tensorflow過程中,一個不標準的操作,就可能導致程序出各種bug,今天我們的豬腳就是“TensorFlow訓練內(顯)存不斷增長”,此問題並不是我遇到的,是公司一位同事遇到的,我把代碼翻了一下,看出了問題所在,由於一些保密原因,我就不在這裏展示那個代碼,但可以用其他代碼來替代。
import tensorflow as tf
x = tf.constant(10)
sess = tf.Session()
sess.run(tf.global_variables_initializer())
while True:
print(sess.run(x))
上面這個代碼,x是一個節點,即使陷入死循環,也不會產生新的節點(此句很有深意)
import tensorflow as tf
x = tf.constant(10)
sess = tf.Session()
sess.run(tf.global_variables_initializer())
while True:
print(sess.run(x+x))
這個代碼,x+x會不斷的產生臨時節點,而且還沒釋放,所以內(顯)存不斷增長,所以最後會導致死機。
解決辦法:1.釋放臨時節點;2.避免在run裏面進行運算產生臨時節點,即出了結果再計算