1. 程式人生 > >Tensorflow函式——tf.variable_scope()詳解

Tensorflow函式——tf.variable_scope()詳解

tf.variable_scope(name_or_scope,default_name=None,values=None,initializer=None,regularizer=None,caching_device=None,partitioner=None,custom_getter=None,reuse=None,dtype=None)

返回一個用於定義建立variable(層)的op的上下文管理器。

該上下文管理器驗證(可選)值來自同一圖形,確保圖形是預設圖形,並推送名稱範圍和variable範圍。

如果name_or_scope不為None,則按原樣使用。 如果範圍為None,則使用default_name。 在這種情況下,如果以前在同一個範圍內使用了相同的名稱,那麼它將會被唯一的附加到_N。

可變範圍允許建立新的variable並分享已建立的variable,同時提供檢查,不會意外建立或共享。 有關詳細資訊,請參閱可變範圍如何操作,這裡我們僅提供幾個基本示例。

如何建立新variable的簡單示例:

with tf.variable_scope("foo"):
    with tf.variable_scope("bar"):
        v = tf.get_variable("v", [1])
        assert v.name == "foo/bar/v:0"
  • 1
  • 2
  • 3
  • 4

共享variable的基本示例:

with tf.variable_scope("foo"
): v = tf.get_variable("v", [1]) with tf.variable_scope("foo", reuse=True): v1 = tf.get_variable("v", [1]) assert v1 == v
  • 1
  • 2
  • 3
  • 4
  • 5

通過捕獲範圍並設定重用來共享variable:

with tf.variable_scope("foo") as scope:
    v = tf.get_variable("v", [1])
    scope.reuse_variables()
    v1 = tf.get_variable("v", [1])
assert
v1 == v
  • 1
  • 2
  • 3
  • 4
  • 5

為了防止意外共享variable,當在非重用範圍內獲取現有variable時,我們引發異常。

with tf.variable_scope("foo"):
    v = tf.get_variable("v", [1])
    v1 = tf.get_variable("v", [1])
    #  Raises ValueError("... v already exists ...").
  • 1
  • 2
  • 3
  • 4

同樣,當嘗試獲取在重用模式下不存在的variable時,我們引發異常。

with tf.variable_scope("foo", reuse=True):
    v = tf.get_variable("v", [1])
    #  Raises ValueError("... v does not exists ...").
  • 1
  • 2
  • 3

請注意,重用標誌是繼承的:如果我們開啟一個重用的範圍,那麼它的所有子範圍也會變得重用。

ARGS:

name_or_scope:string或VariableScope:要開啟的範圍。
default_name:如果name_or_scope引數為None,則將使用預設名稱,此名稱將被唯一。 如果提供了name_or_scope,它將不會被使用,因此它不是必需的,可以是None。
值:傳遞給op函式的Tensor引數列表。
初始化器:此範圍內的變數的預設初始化程式。
regularizer:此範圍內的變數的預設正則符。
caching_device:此範圍內的變數的預設快取裝置。
partitioner:此範圍內變數的預設分割槽。
custom_getter:此範圍內變數的預設定製getter。
重用:TrueNone 如果是,我們進入該範圍以及所有子範圍的重用模式; 如果沒有,我們只是繼承父範圍重用。
dtype:在此範圍中建立的變數型別(預設為傳遞範圍中的型別,或從父範圍繼承)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

返回:

可以捕獲和重複使用的範圍。

相關推薦

Tensorflow函式——tf.variable_scope

tf.variable_scope(name_or_scope,default_name=None,values=None,initializer=None,regularizer=None,caching_device=None,partitioner=None,custo

Tensorflow函數——tf.variable_scope

.get pri rfi 重復 use release 類型 閱讀 不存在 Tensorflow函數——tf.variable_scope()詳解 https://blog.csdn.net/yuan0061/article/detai

getline

    學習C++的同學可能都會遇到一個getline()函式,譬如在C++premer中,標準string型別第二小節就是“用getline讀取整行文字”。書上給的程式如下: int main() {     string line:     while(g

service

*從public<code>service</code>方法接收標準HTTP請求,並將它們分派到該類中定義的<code>do</code><i>.</i>方法。此方法是{@link javax.servlet.Ser

doTrace

由伺服器(通過<code>service</code>方法)呼叫,以允許servlet處理TRACE請求。TRACE將隨TRACE請求一起傳送的報頭返回給客戶端,以便用於除錯。不需要重寫此方法。  原始碼: /** * Call

doOptions

 原始碼註釋中文意思為 伺服器呼叫(通過<code>service</code>方法)以允許servlet處理OPTIONS請求。OPTIONS請求確定伺服器支援哪些HTTP方法,並返回適當的頭。例如,如果servlet覆蓋<code>d

doGet

doGet方法原始碼 /** * Called by the server (via the <code>service</code> method) to * allow a servlet to handle a GET request

doPut

先看它與post的區別: PUT 與 POST 方法的區別在於,PUT方法是冪等的:呼叫一次與連續呼叫多次是等價的(即沒有副作用),而連續呼叫多次POST方法可能會有副作用,比如將一個訂單重複提交多次。 註釋的中文意思為: 伺服器呼叫(通過<code>servic

doPost

 此方法中註釋的意思為: 由伺服器(通過<code>service</code>方法)呼叫,以允許servlet處理POST請求。 HTTP POST方法允許客戶端一次向Web伺服器傳送無限長的資料,並且在釋出諸如信用卡號碼之類的資訊時非常有用

doHead

HttpServlet中有一個方法為doHead() 它主要作用是返回頭部資訊 他的註釋中文意思大概是: 從受保護<code>服務</code>方法接收HTTP HEAD請求並處理該請求。 當客戶端僅希望看到響應的頭部時,例如Content-Ty

(轉)Python內建函式進階之“屬性property

原文:https://blog.csdn.net/GeekLeee/article/details/78519767 版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/GeekLeee/article/details/78519767屬性函式(property

Tensorflow 入門學習13.卷積神經網路原理3.網路結構

本文學習內容來自《TensorFlow深度學習應用實踐》 從前面介紹的卷積運算的基本原理和概念,從本質上來說卷積神經網路就是將影象處理的二維離散卷積運算和神經網路相結合。這種卷積運算可以用於自動提取特徵,而卷積神經網路也主要應用於二維影象的識別。 卷積神經網路原

C程式設計|用函式實現模組化程式設計

目錄 一、為什麼要用函式 使用函式可使程式清晰、精煉、簡單、靈活。 函式就是功能。每一個函式用來實現一個特定的功能。函式名應反映其代表的功能。 在設計

logistic迴歸(二:損失函式cost function

有監督學習 機器學習分為有監督學習,無監督學習,半監督學習,強化學習。對於邏輯迴歸來說,就是一種典型的有監督學習。 既然是有監督學習,訓練集自然可以用如下方式表述: {(x1,y1),(x2,y2),⋯,(xm,ym)} 對於這m個訓練樣本,每個樣本本身

TensorFlow 中的正則化Batch Normalization和實現程式碼

        雖然在訓練初期使用 He 初始化方法初始ELU(或者其他派生的ReLU)能夠有效的防止梯度彌散、爆炸問題。但是這種方式無法保證梯度問題不會在訓練過程中產生。         2015年的一篇paper( “Batch Normalization: Accel

Excel資料分析與業務建模_第四章_匹配函式MATCH語法及應用例項

如果有一天,EXCEL中沒有了LOOKUP函式,怎麼辦?答案是就靠MATCH和INDEX兩兄弟了。 MATCH函式可返回指定區域內指定內容所在的行號(縱向區域)或列號(橫向區域)。 Suppose you have a worksheet with 5,000 rows c

定義函式遞迴

函式:就是功能(實現這個功能的過程)  1、定義函式:     返回值  函式名(形參)     {     }     static 返回值 函式名(形參)     {     } 注:如果被修飾為static,此函式只能被本地呼叫。 2、呼叫函式:執行一次函式 注

機器學習--支援向量機徑向基核函式RBF

前面講解了什麼是核函式,以及有效核函式的要求,到這裡基本上就結束了,很多部落格也是如此,但是呢這些只是理解支援向量機的原理,如何使用它講解的卻很少,尤其是如何選擇核函式更沒有人講,不講也是有原因的,因為核函式的選擇沒有統一的定論,這需要使用人根據不同場合或者不同問題選擇核函式

C++之函式物件/偽函式Function Object

       除了自定義的函式物件,標準庫還為我們提供了一系列現成的函式物件, 比如常見的數學、邏輯運算等。例如:negate<type>(),plus<type>(),minus<type>(),multiplies<type&g

objective-c 類和物件中靜態資料成員和靜態成員函式類方法

作為初學者,相信大家都對objective-c的靜態資料成員和靜態成員函式都挺糾結的,我現在和大家分享下我對這個知識點的理解,請大家多多指點.... 如果大家學過C++,那麼都應該知道和了解靜態資料成