Variable
在tensorflow中只有定義該字符串是變量,它才是變量。
語法:
state = tf.Variable()
#example
import tensorflow as tf
state = tf.Variable(0, name='counter') #tf.Variable(initializer,name),參數(shù)initializer是初始化參數(shù),name是可自定義的變量名稱
# 定義常量 one
one = tf.constant(1)
# 定義加法步驟 (注: 此步并沒有直接計算)
new_value = tf.add(state, one)
# 將 State 更新成 new_value
update = tf.assign(state, new_value) #tf.assign(ref, value, validate_shape=None, use_locking=None, name=None)函數(shù)完成了將value賦值給ref的作用。其中:ref 必須是tf.Variable創(chuàng)建的tensor,如果ref=tf.constant()會報錯!
如果你在 Tensorflow 中設定了變量,那么初始化變量是最重要的?。∷远x了變量以后, 一定要定義init = tf.global_variables_initializer() .
到這里變量還是沒有被激活,需要再在 sess 里, sess.run(init) , 激活 init 這一步
# 啟動圖后, 變量必須先經(jīng)過`初始化` (init) op 初始化,
# 首先必須增加一個`初始化` op 到圖中.
init_op = tf.global_variables_initializer()
# 啟動圖, 運行 op
with tf.Session() as sess:
# 運行 'init' op
sess.run(init_op)
# 打印 'state' 的初始值
print (sess.run(state))
# 運行 op, 更新 'state', 并打印 'state'
for _ in range(3):
sess.run(update)
print(sess.run(state))
Fetch
'''
為了取回操作的輸出內(nèi)容, 可以在使用 Session 對象的 run() 調(diào)用 執(zhí)行圖時, 傳入一些 tensor, 這些 tensor 會幫助你取回結(jié)果. 在之前的例子里, 我們只取回了單個節(jié)點 state, 但是你也可以取回多個 tensor:
'''
input1 = tf.constant(3.0)
input2 = tf.constant(2.0)
input3 = tf.constant(5.0)
intermed = tf.add(input2,input3)
mul = tf.multiply(input1, intermed)
with tf.Session() as sess:
result = sess.run([mul, intermed])
print(result)
Feed
'''
TensorFlow 還提供了 feed 機制, 該機制 可以臨時替代圖中的任意操作中的 tensor 可以對圖中任何操作提交補丁, 直接插入一個 tensor.
feed 使用一個 tensor 值臨時替換一個操作的輸出結(jié)果. 你可以提供 feed 數(shù)據(jù)作為 run() 調(diào)用的參數(shù). feed 只在調(diào)用它的方法內(nèi)有效, 方法結(jié)束, feed 就會消失. 最常見的用例是將某些特殊的操作指定為 "feed" 操作, 標記的方法是使用 tf.placeholder() 為這些操作創(chuàng)建占位符.
'''
input1 = tf.placeholder(tf.float32) #占位
input2 = tf.placeholder(tf.float32)
output = tf.multiply(input1, input2)
with tf.Session() as sess:
print(sess.run([output], feed_dict={input1:[7.], input2:[2.]})) #喂入數(shù)據(jù)