tensorflow入門筆記3:placeholder機制和Variable變量

1.placeholder 機制

  • placeholder 機制的作用

網(wǎng)絡(luò)的輸入數(shù)據(jù)是一個矩陣,我們把多個這樣的矩陣數(shù)據(jù)打包成一個很大的數(shù)據(jù)集,如果將這個數(shù)據(jù)集當(dāng)作變量或常量一下子輸入到網(wǎng)絡(luò)中,那么就需要定義很多的網(wǎng)絡(luò)輸入常量,于是計算圖上將會涌現(xiàn)大量的輸入節(jié)點。這是不利的,這些節(jié)點的利用率很低。
placehoder 機制被設(shè)計用來解決這個問題。編程時只需要將數(shù)據(jù)通過 placeholder 傳入 TensorFlow 計算圖即可。

  • 使用 tf.placeholder()
import tensorflow as tf
a = tf.placeholder(tf.float32,shape=(2),name="input") 
b = tf.placeholder(tf.float32,shape=(2),name="input")
result = a+b

with tf.Session() as sess :
  sess.run(result,feed_dict={a:[1.0,2.0],b:[3.0,4.0]})
  print(result)
  #輸出[4.,6.]

在 placeholder 定義時,這個位置上的數(shù)據(jù)類型dtype是需要指定且不可以改變的。 placeholder 中數(shù)據(jù)的維度信息shape可以根據(jù)提供的數(shù)據(jù)推導(dǎo)得出,所以不一定要給出;或者對于不確定的維度,填入None即可。
這里輸入ab定義為常量,這里將它們定義為一個tf.placeholder(),在運行會話時需要通過sess.run()函數(shù)的feed_dict來提供ab的取值。feed_dict是一個字典dict,在字典中需要給出每個用到的placeholder的取值。

2.Varibale變量

  • tf.Variable()創(chuàng)建變量
tf.Variable(initial_value,
             trainable=True, 
             collections=None, 
             validate_shape=True, 
             name=None)
參數(shù)名稱 參數(shù)類型 含義
initial_value 所有可以轉(zhuǎn)換為Tensor的類型 變量的初始值,一般是隨機生成函數(shù)的值
trainable bool 是否加入到GraphKeys.TRAINABLE_VARIABLES被迭代優(yōu)化
collections list 指定該圖變量的類型、默認(rèn)為GraphKeys.GLOBAL_VARIABLES
validate_shape bool 是否進(jìn)行類型和維度檢查
name string 變量的名稱,如果沒有指定則系統(tǒng)會自動分配一個唯一的值
  • sess對變量運算前初始化所有變量
init = tf.global_variables_initializer()
with tf.Session() as sess:
  sess.run(init)
  • 管理變量的變量空間
with tf.variable_scope("one") :
a = tf.get_variable ("a",shape=[1],initializer=tf.constant_initializer(1.0))
  • 以上代碼在名為one的變量空間內(nèi)創(chuàng)建名字為a的變量;
  • 因為tf.variable_scope("one")的參數(shù)默認(rèn)reuse=False,所以在one這個變量空間內(nèi)不能在創(chuàng)建名字為a的變量;
  • reuse=Trueget_variable()函數(shù)會直接獲取name屬性相同的己經(jīng)創(chuàng)建的變量,獲取的變量沒創(chuàng)建過則會報錯(區(qū)別于指定initializer時為創(chuàng)建新變量)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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