1. 程式人生 > 程式設計 >Tensorflow累加的實現案例

Tensorflow累加的實現案例

由於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累加的實現案例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。