欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

tensorflow創(chuàng)建變量以及根據(jù)名稱查找變量

 更新時間:2018年03月10日 10:23:40   投稿:lijiao  
這篇文章主要為大家詳細(xì)介紹了tensorflow創(chuàng)建變量以及根據(jù)名稱查找變量,具有一定的參考價值,感興趣的小伙伴們可以參考一下

環(huán)境:Ubuntu14.04,tensorflow=1.4(bazel源碼安裝),Anaconda python=3.6

聲明變量主要有兩種方法:tf.Variabletf.get_variable,二者的最大區(qū)別是:

(1) tf.Variable是一個類,自帶很多屬性函數(shù);而 tf.get_variable是一個函數(shù);
(2) tf.Variable只能生成獨一無二的變量,即如果給出的name已經(jīng)存在,則會自動修改生成新的變量name;
(3) tf.get_variable可以用于生成共享變量。默認(rèn)情況下,該函數(shù)會進(jìn)行變量名檢查,如果有重復(fù)則會報錯。當(dāng)在指定變量域中聲明可

以變量共享時,可以重復(fù)使用該變量(例如RNN中的參數(shù)共享)。
下面給出簡單的的示例程序:

import tensorflow as tf

with tf.variable_scope('scope1',reuse=tf.AUTO_REUSE) as scope1:
  x1 = tf.Variable(tf.ones([1]),name='x1')
  x2 = tf.Variable(tf.zeros([1]),name='x1')
  y1 = tf.get_variable('y1',initializer=1.0)
  y2 = tf.get_variable('y1',initializer=0.0)
  init = tf.global_variables_initializer()
  with tf.Session() as sess:
    sess.run(init)
    print(x1.name,x1.eval())
    print(x2.name,x2.eval())
    print(y1.name,y1.eval())
    print(y2.name,y2.eval())

輸出結(jié)果為:

scope1/x1:0 [ 1.]
scope1/x1_1:0 [ 0.]
scope1/y1:0 1.0
scope1/y1:0 1.0

1. tf.Variable(…)

tf.Variable(…)使用給定初始值來創(chuàng)建一個新變量,該變量會默認(rèn)添加到 graph collections listed in collections, which defaults to [GraphKeys.GLOBAL_VARIABLES]。

如果trainable屬性被設(shè)置為True,該變量同時也會被添加到graph collection GraphKeys.TRAINABLE_VARIABLES.

# tf.Variable
__init__(
  initial_value=None,
  trainable=True,
  collections=None,
  validate_shape=True,
  caching_device=None,
  name=None,
  variable_def=None,
  dtype=None,
  expected_shape=None,
  import_scope=None,
  constraint=None
)

2. tf.get_variable(…)

tf.get_variable(…)的返回值有兩種情形:

使用指定的initializer來創(chuàng)建一個新變量;
當(dāng)變量重用時,根據(jù)變量名搜索返回一個由tf.get_variable創(chuàng)建的已經(jīng)存在的變量;

get_variable(
  name,
  shape=None,
  dtype=None,
  initializer=None,
  regularizer=None,
  trainable=True,
  collections=None,
  caching_device=None,
  partitioner=None,
  validate_shape=True,
  use_resource=None,
  custom_getter=None,
  constraint=None
)

3. 根據(jù)名稱查找變量

在創(chuàng)建變量時,即使我們不指定變量名稱,程序也會自動進(jìn)行命名。于是,我們可以很方便的根據(jù)名稱來查找變量,這在抓取參數(shù)、finetune模型等很多時候都很有用。

示例1:

通過在tf.global_variables()變量列表中,根據(jù)變量名進(jìn)行匹配搜索查找。 該種搜索方式,可以同時找到由tf.Variable或者tf.get_variable創(chuàng)建的變量。

import tensorflow as tf

x = tf.Variable(1,name='x')
y = tf.get_variable(name='y',shape=[1,2])
for var in tf.global_variables():
  if var.name == 'x:0':
    print(var)

示例2:

利用get_tensor_by_name()同樣可以獲得由tf.Variable或者tf.get_variable創(chuàng)建的變量。
需要注意的是,此時獲得的是Tensor, 而不是Variable,因此 x不等于x1.

import tensorflow as tf

x = tf.Variable(1,name='x')
y = tf.get_variable(name='y',shape=[1,2])

graph = tf.get_default_graph()

x1 = graph.get_tensor_by_name("x:0")
y1 = graph.get_tensor_by_name("y:0")

示例3:

針對tf.get_variable創(chuàng)建的變量,可以利用變量重用來直接獲取已經(jīng)存在的變量。

with tf.variable_scope("foo"):
  bar1 = tf.get_variable("bar", (2,3)) # create

with tf.variable_scope("foo", reuse=True):
  bar2 = tf.get_variable("bar") # reuse

with tf.variable_scope("", reuse=True): # root variable scope
  bar3 = tf.get_variable("foo/bar") # reuse (equivalent to the above)

print((bar1 is bar2) and (bar2 is bar3))

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • OpenCV實現(xiàn)手勢虛擬拖拽的使用示例(附demo)

    OpenCV實現(xiàn)手勢虛擬拖拽的使用示例(附demo)

    本文主要介紹了OpenCV實現(xiàn)手勢虛擬拖拽的使用示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-11-11
  • Python使用struct處理二進(jìn)制(pack和unpack用法)

    Python使用struct處理二進(jìn)制(pack和unpack用法)

    這篇文章主要介紹了Python使用struct處理二進(jìn)制(pack和unpack用法),幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-11-11
  • 介紹Python中的一些高級編程技巧

    介紹Python中的一些高級編程技巧

    這篇文章主要介紹了介紹Python中的一些高級編程技巧,包括推導(dǎo)師和裝飾器等重要的進(jìn)階知識點,皆為深入學(xué)習(xí)Python開發(fā)的必備基本功,需要的朋友可以參考下
    2015-04-04
  • 對python中的 os.mkdir和os.mkdirs詳解

    對python中的 os.mkdir和os.mkdirs詳解

    今天小編就為大家分享一篇對python中的 os.mkdir和os.mkdirs詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • python利用元類和描述器實現(xiàn)ORM模型的詳細(xì)步驟

    python利用元類和描述器實現(xiàn)ORM模型的詳細(xì)步驟

    Python中的類與數(shù)據(jù)庫之間的映射,對數(shù)據(jù)的操作就不用編寫SQL語言了,因為都封裝好了,比如你想插入一條數(shù)據(jù),你就直接創(chuàng)建一個對象即可,下面通過本文學(xué)習(xí)下python利用元類和描述器實現(xiàn)ORM模型的詳細(xì)步驟,感興趣的朋友一起看看吧
    2021-11-11
  • python爬蟲入門教程--快速理解HTTP協(xié)議(一)

    python爬蟲入門教程--快速理解HTTP協(xié)議(一)

    http協(xié)議是互聯(lián)網(wǎng)里面最重要,最基礎(chǔ)的協(xié)議之一,我們的爬蟲需要經(jīng)常和http協(xié)議打交道。下面這篇文章主要給大家介紹了關(guān)于python爬蟲入門之快速理解HTTP協(xié)議的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-05-05
  • python 批量修改/替換數(shù)據(jù)的實例

    python 批量修改/替換數(shù)據(jù)的實例

    今天小編就為大家分享一篇python 批量修改/替換數(shù)據(jù)的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • 使用Pandas操作Excel文件的技巧與方法分享

    使用Pandas操作Excel文件的技巧與方法分享

    今天接到一個需求,需要讀取excel,將其中兩列分別作為字典的key、value進(jìn)行保存,怎么讀取excel呢,之前好像使用過Pandas,但是接觸不多,借此機(jī)會記錄一下學(xué)習(xí)的收獲,需要的朋友可以參考下
    2023-12-12
  • Python實現(xiàn)數(shù)據(jù)濾波的示例詳解

    Python實現(xiàn)數(shù)據(jù)濾波的示例詳解

    這篇文章主要為大家詳細(xì)介紹了Python實現(xiàn)數(shù)據(jù)濾波的相關(guān)知識,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03
  • Jupyter notebook設(shè)置背景主題,字體大小及自動補(bǔ)全代碼的操作

    Jupyter notebook設(shè)置背景主題,字體大小及自動補(bǔ)全代碼的操作

    這篇文章主要介紹了Jupyter notebook設(shè)置背景主題,字體大小及自動補(bǔ)全代碼的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04

最新評論