tensorflow基本用法(2)

Variable

在tensorflow中只有定義該字符串是變量,它才是變量。
語(yǔ)法:

state = tf.Variable()
#example
import tensorflow as tf
state = tf.Variable(0, name='counter') #tf.Variable(initializer,name),參數(shù)initializer是初始化參數(shù),name是可自定義的變量名稱(chēng)
# 定義常量 one
one = tf.constant(1)
# 定義加法步驟 (注: 此步并沒(méi)有直接計(jì)算)
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()會(huì)報(bào)錯(cuò)!

如果你在 Tensorflow 中設(shè)定了變量,那么初始化變量是最重要的??!所以定義了變量以后, 一定要定義init = tf.global_variables_initializer() .
到這里變量還是沒(méi)有被激活,需要再在 sess 里, sess.run(init) , 激活 init 這一步

# 啟動(dòng)圖后, 變量必須先經(jīng)過(guò)`初始化` (init) op 初始化,
# 首先必須增加一個(gè)`初始化` op 到圖中.
init_op = tf.global_variables_initializer() 
# 啟動(dòng)圖, 運(yùn)行 op
with tf.Session() as sess:
  # 運(yùn)行 'init' op
  sess.run(init_op)
  # 打印 'state' 的初始值
  print (sess.run(state))
  # 運(yùn)行 op, 更新 'state', 并打印 'state'
  for _ in range(3):
    sess.run(update)
    print(sess.run(state))

Fetch

'''
為了取回操作的輸出內(nèi)容, 可以在使用 Session 對(duì)象的 run() 調(diào)用 執(zhí)行圖時(shí), 傳入一些 tensor, 這些 tensor 會(huì)幫助你取回結(jié)果. 在之前的例子里, 我們只取回了單個(gè)節(jié)點(diǎn) state, 但是你也可以取回多個(gè) 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 機(jī)制, 該機(jī)制 可以臨時(shí)替代圖中的任意操作中的 tensor 可以對(duì)圖中任何操作提交補(bǔ)丁, 直接插入一個(gè) tensor.
feed 使用一個(gè) tensor 值臨時(shí)替換一個(gè)操作的輸出結(jié)果. 你可以提供 feed 數(shù)據(jù)作為 run() 調(diào)用的參數(shù). feed 只在調(diào)用它的方法內(nèi)有效, 方法結(jié)束, feed 就會(huì)消失. 最常見(jiàn)的用例是將某些特殊的操作指定為 "feed" 操作, 標(biāo)記的方法是使用 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ù)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容