您好,登錄后才能下訂單哦!
由于python內部的變量其實都是reference,而Tensorflow實現的時候也沒有意義去判斷輸出是否是同一變量名,從而判定是否要新建一個Tensor用于輸出。Tensorflow為了滿足所有需求,定義了兩個不同的函數:tf.add和tf.assign_add。從名字即可看出區別,累加應該使用tf.assign_add。同理的還有tf.assign_sub和tf.assign。
具體地,筆者需要一個iteration counter類似的變量,即每次使用一個batch更新參數之后都使得該變量加一,進而控制learning rate等參數來調節學習過程。
最初的實現如下:
a = tf.Variable(tf.zeros(1)) a = tf.add(a,tf.ones(1)) sess = tf.Session() sess.run(tf.global_variable_initializer()) for i in range(1000): print(sess.run(a))
那因為第一行代碼輸出的a和第二行代碼輸出的a,雖然變量名相同,但是實質指向的變量以及空間都不同,每次輸出的都是1。
更改后的代碼則是如下:
a = tf.Variable(tf.zeros(1)) a = tf.assign_add(a,tf.ones(1)) sess = tf.Session() sess.run(tf.global_variable_initializer()) for i in range(1000): print(sess.run(a))
以上這篇Tensorflow累加的實現案例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。