數據流圖有兩大組成部分:
- Tensor對象
- Op對象
這二者的特性都是不可變的(immutable),在數據流圖中對於普通Tensor來說,經過一次Op操作之后,就會轉化為另一個Tensor。當前一個Tensor的使命完成之后就會被系統回收。
但在機器學習任務中,某些參數(eg:模型參數)可能需要長期保存,他們的值還需要不斷迭代更新,也就是,它必須是可變的。
為了處理這個問題,所以就有了變量(Variable)
Variable
是一個常駐內存,不會被輕易回收的Tensor。
Variable
對象通過tf.Variable()即可完成
import tensorflow as tf
my_state = tf.Variable(0, name = "counter") #創建一個Op變量my_state,並初始化為0
one = tf.constant(1) #創建一個Op常量賦值為1
new_value = tf.add(my_state, one)
update = tf.assign(my_state, new_value) #通過assign()函數,將new_value的值賦給my_state.
init_Op = tf.global_variables_initializer() #tf.global_variables_initializer()會返回一個操作,初始化計算圖中所有Variable對象
#------------------------------------------------
#以上部分為數據流圖的構想,只有在構建會話Session()之后,構想才給予實施。
with tf.Session() as sess:
sess.run(init_Op) #初始化操作
print(sess.run(my_state))
for _ in range(3): #下划線變量"_" 可理解為“垃圾箱變量”
sess.run(update)
print(sess.run(my_state))
0
1
2
3