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

Tensorflow函數——tf.variable_scope()

.get pri rfi 重復 use release 類型 閱讀 不存在

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

https://blog.csdn.net/yuan0061/article/details/80576703

2018年06月05日 09:38:25 yuan0061 閱讀數:2567

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
  • 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
  • 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
  • 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
  • 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
  • 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。
重用:True或None 如果是,我們進入該範圍以及所有子範圍的重用模式; 如果沒有,我們只是繼承父範圍重用。
dtype:在此範圍中創建的變量類型(默認為傳遞範圍中的類型,或從父範圍繼承)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

返回:

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

        <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/markdown_views-ea0013b516.css">
            </div>

Tensorflow函數——tf.variable_scope()