數(shù)據(jù)流圖有兩大組成部分:
- Tensor對(duì)象
- Op對(duì)象
這二者的特性都是不可變的(immutable),在數(shù)據(jù)流圖中對(duì)于普通Tensor來(lái)說(shuō)众旗,經(jīng)過(guò)一次Op操作之后尤蛮,就會(huì)轉(zhuǎn)化為另一個(gè)Tensor盗扇。當(dāng)前一個(gè)Tensor的使命完成之后就會(huì)被系統(tǒng)回收蜘拉。
但在機(jī)器學(xué)習(xí)任務(wù)中遂唧,某些參數(shù)(eg:模型參數(shù))可能需要長(zhǎng)期保存,他們的值還需要不斷迭代更新之拨,也就是茉继,它必須是可變的。
為了處理這個(gè)問(wèn)題蚀乔,所以就有了變量(Variable)
Variable
是一個(gè)常駐內(nèi)存烁竭,不會(huì)被輕易回收的Tensor。
Variable
對(duì)象通過(guò)tf.Variable()即可完成
import tensorflow as tf
my_state = tf.Variable(0, name = "counter") #創(chuàng)建一個(gè)Op變量my_state吉挣,并初始化為0
one = tf.constant(1) #創(chuàng)建一個(gè)Op常量賦值為1
new_value = tf.add(my_state, one)
update = tf.assign(my_state, new_value) #通過(guò)assign()函數(shù)派撕,將new_value的值賦給my_state.
init_Op = tf.global_variables_initializer() #tf.global_variables_initializer()會(huì)返回一個(gè)操作,初始化計(jì)算圖中所有Variable對(duì)象
#------------------------------------------------
#以上部分為數(shù)據(jù)流圖的構(gòu)想,只有在構(gòu)建會(huì)話Session()之后,構(gòu)想才給予實(shí)施血柳。
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