Tensorflow——tf.Variable()桥状、tf.get_variable()和tf.placeholder()

tf.Variable()

??tf.Variable(initializer,name),參數initializer是初始化參數佩捞,name是可自定義的變量名稱域庇,用法如下:

import tensorflow as tf
v1=tf.Variable(tf.random_normal(shape=[4,3],mean=0,stddev=1),name='v1')
v2=tf.Variable(tf.constant(2),name='v2')
v3=tf.Variable(tf.ones([4,3]),name='v3')
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    print(sess.run(v1))
    print(sess.run(v2))
    print(sess.run(v3))

結果如下:
[[-1.2115501 1.0484737 0.55210656]
[-1.5301195 0.9060654 -2.6766613 ]
[ 0.27101386 -0.32336152 0.44544214]
[-0.0120788 -0.3409422 -0.48505628]]

2

[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]

tf.get_variable()

??tf.get_variable(name, shape, initializer): name就是變量的名稱携兵,shape是變量的維度疾掰,initializer是變量初始化的方式,初始化的方式有以下幾種:

tf.constant_initializer:常量初始化函數
tf.random_normal_initializer:正態(tài)分布
tf.truncated_normal_initializer:截取的正態(tài)分布
tf.random_uniform_initializer:均勻分布
tf.zeros_initializer:全部是0
tf.ones_initializer:全是1
tf.uniform_unit_scaling_initializer:滿足均勻分布徐紧,但不影響輸出數量級的隨機值


import tensorflow as tf;  
import numpy as np;  
import matplotlib.pyplot as plt;  
  
a1 = tf.get_variable(name='a1', shape=[2,3], initializer=tf.random_normal_initializer(mean=0, stddev=1))
a2 = tf.get_variable(name='a2', shape=[1], initializer=tf.constant_initializer(1))
a3 = tf.get_variable(name='a3', shape=[2,3], initializer=tf.ones_initializer())
 
with tf.Session() as sess:
    sess.run(tf.initialize_all_variables())
    print sess.run(a1)
    print sess.run(a2)

輸出:

[[ 0.42299312 -0.25459203 -0.88605702]
[ 0.22410156 1.34326422 -0.39722782]]

[ 1.]

[[ 1. 1. 1.]
[ 1. 1. 1.]]

tf.Variable()静檬、tf.get_variable() 兩者區(qū)別

?? tf.get_variable的參數列表為tf.get_variable(name, shape=None, initializer=None, dtype=tf.float32, trainable=True, collections=None),如果已存在參數定義相同的變量并级,就返回已存在的變量拂檩,否則創(chuàng)建由參數定義的新變量
??所以tf.get_variable創(chuàng)建變量時嘲碧,會進行變量檢查稻励,當設置為共享變量時(通過scope.reuse_variables()或tf.get_variable_scope().reuse_variables()),檢查到第二個擁有相同名字的變量愈涩,就返回已創(chuàng)建的相同的變量望抽;如果沒有設置共享變量,則會報[ValueError: Variable varx alreadly exists, disallowed.]的錯誤履婉。
?? 而tf.Variable()創(chuàng)建變量時煤篙,name屬性值允許重復,檢查到相同名字的變量時毁腿,由自動別名機制創(chuàng)建不同的變量辑奈。

例如;

with tf.name_scope('name_scope_1'):
var1 = tf.get_variable(name='var1', shape=[1], initializer=None, dtype=tf.float32)
var2 = tf.Variable(name='var2', initial_value=[1], dtype=tf.float32)
var21 = tf.Variable(name='var2', initial_value=[2], dtype=tf.float32)

輸出name時,如下:
var1:0
name_scope_1/var2:0
name_scope_1/var2_1:0

with tf.name_scope('name_scope_2') as scope:
scope.reuse_variables() #tf.get_variable_scope().reuse_variables()
var1 = tf.get_variable(name='var1', shape=[1], initializer=None, dtype=tf.float32)
var11 = tf.get_variable(name='var1')
var2 = tf.Variable(name='var2', initial_value=[1], dtype=tf.float32)
var21 = tf.Variable(name='var2', initial_value=[2], dtype=tf.float32)
with tf.Session() as sess:
print(var1.name)
print(var11.name)
print(var2.name)
print(var21.name)

輸出name時已烤,如下:
var1:0
var1:0
name_scope_2/var2:0
name_scope_2/var2_1:0

tf.placeholder()

tf.placeholder(dtype, shape=None, name=None)

placeholder鸠窗,占位符,在tensorflow中類似于函數參數胯究,運行時必須傳入值稍计。

  • dtype:數據類型。常用的是tf.float32,tf.float64等數值類型唐片。
  • shape:數據形狀丙猬。默認是None涨颜,就是一維值,也可以是多維茧球,比如[2,3], [None, 3]表示列是3庭瑰,行不定。
  • name:名稱抢埋。
import tensorflow as tf
import numpy as np
 
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:[3.], input2: [4.]})
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末弹灭,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子揪垄,更是在濱河造成了極大的恐慌穷吮,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饥努,死亡現(xiàn)場離奇詭異捡鱼,居然都是意外死亡,警方通過查閱死者的電腦和手機酷愧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門驾诈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人溶浴,你說我怎么就攤上這事乍迄。” “怎么了士败?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵闯两,是天一觀的道長。 經常有香客問我谅将,道長漾狼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任戏自,我火速辦了婚禮邦投,結果婚禮上,老公的妹妹穿的比我還像新娘擅笔。我一直安慰自己志衣,他們只是感情好,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布猛们。 她就那樣靜靜地躺著念脯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪弯淘。 梳的紋絲不亂的頭發(fā)上绿店,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機與錄音,去河邊找鬼假勿。 笑死借嗽,一個胖子當著我的面吹牛,可吹牛的內容都是我干的转培。 我是一名探鬼主播恶导,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼浸须!你這毒婦竟也來了惨寿?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤删窒,失蹤者是張志新(化名)和其女友劉穎裂垦,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體肌索,經...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡蕉拢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了驶社。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片企量。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖亡电,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情硅瞧,我是刑警寧澤份乒,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站腕唧,受9級特大地震影響或辖,放射性物質發(fā)生泄漏。R本人自食惡果不足惜枣接,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一颂暇、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧但惶,春花似錦耳鸯、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至添谊,卻和暖如春财喳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工耳高, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留扎瓶,地道東北人。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓泌枪,卻偏偏與公主長得像栗弟,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子工闺,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354