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)
返回一個(gè)用于定義創(chuàng)建variable(層)的op的上下文管理器。
該上下文管理器驗(yàn)證(可選)值來自同一圖形,確保圖形是默認(rèn)圖形,并推送名稱范圍和variable范圍。
如果name_or_scope不為None,則按原樣使用。 如果范圍為None,則使用default_name。 在這種情況下,如果以前在同一個(gè)范圍內(nèi)使用了相同的名稱,那么它將會(huì)被唯一的附加到_N。
可變范圍允許創(chuàng)建新的variable并分享已創(chuàng)建的variable,同時(shí)提供檢查,不會(huì)意外創(chuàng)建或共享。 有關(guān)詳細(xì)信息,請(qǐng)參閱可變范圍如何操作,這里我們僅提供幾個(gè)基本示例。
如何創(chuàng)建新variable的簡(jiǎn)單示例:
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
通過捕獲范圍并設(shè)置重用來共享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,當(dāng)在非重用范圍內(nèi)獲取現(xiàn)有variable時(shí),我們引發(fā)異常。
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
同樣,當(dāng)嘗試獲取在重用模式下不存在的variable時(shí),我們引發(fā)異常。
with tf.variable_scope("foo", reuse=True):v = tf.get_variable("v", [1])# Raises ValueError("... v does not exists ..."). - 1
- 2
- 3
請(qǐng)注意,重用標(biāo)志是繼承的:如果我們打開一個(gè)重用的范圍,那么它的所有子范圍也會(huì)變得重用。
ARGS:
name_or_scope:string或VariableScope:要打開的范圍。
default_name:如果name_or_scope參數(shù)為None,則將使用默認(rèn)名稱,此名稱將被唯一。 如果提供了name_or_scope,它將不會(huì)被使用,因此它不是必需的,可以是None。
值:傳遞給op函數(shù)的Tensor參數(shù)列表。
初始化器:此范圍內(nèi)的變量的默認(rèn)初始化程序。
regularizer:此范圍內(nèi)的變量的默認(rèn)正則符。
caching_device:此范圍內(nèi)的變量的默認(rèn)緩存設(shè)備。
partitioner:此范圍內(nèi)變量的默認(rèn)分區(qū)。
custom_getter:此范圍內(nèi)變量的默認(rèn)定制getter。
重用:True或None 如果是,我們進(jìn)入該范圍以及所有子范圍的重用模式; 如果沒有,我們只是繼承父范圍重用。
dtype:在此范圍中創(chuàng)建的變量類型(默認(rèn)為傳遞范圍中的類型,或從父范圍繼承)
總結(jié)
以上是生活随笔為你收集整理的Tensorflow函数——tf.variable_scope()的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tf.variable_scope 参数
- 下一篇: TENSORFLOW变量作用域(VARI