tf.get_variable函數(shù)

2018-10-24 16:34 更新
函數(shù):tf.get_variable
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
)

定義在:tensorflow/python/ops/variable_scope.py

參見(jiàn)指南:變量>共享變量

獲取具有這些參數(shù)的現(xiàn)有變量或創(chuàng)建一個(gè)新變量.
此函數(shù)將名稱(chēng)與當(dāng)前變量范圍進(jìn)行前綴,并執(zhí)行重用檢查.有關(guān)重用如何工作的詳細(xì)說(shuō)明,請(qǐng)參見(jiàn)變量范圍.下面是一個(gè)基本示例:

with tf.variable_scope("foo"):
    v = tf.get_variable("v", [1])  # v.name == "foo/v:0"
    w = tf.get_variable("w", [1])  # w.name == "foo/w:0"
with tf.variable_scope("foo", reuse=True):
    v1 = tf.get_variable("v")  # The same as v above.

如果初始化器為 None(默認(rèn)),則將使用在變量范圍內(nèi)傳遞的默認(rèn)初始化器.如果另一個(gè)也是 None,那么一個(gè) glorot_uniform_initializer 將被使用.初始化器也可以是張量,在這種情況下,變量被初始化為該值和形狀.

類(lèi)似地,如果正則化器是 None(默認(rèn)),則將使用在變量范圍內(nèi)傳遞的默認(rèn)正則符號(hào)(如果另一個(gè)也是 None,則默認(rèn)情況下不執(zhí)行正則化).

如果提供了分區(qū),則返回 PartitionedVariable.作為張量訪(fǎng)問(wèn)此對(duì)象將返回沿分區(qū)軸連接的碎片.
一些有用的分區(qū)可用.例如:variable_axis_size_partitioner 和 min_max_variable_partitioner.

參數(shù):

  • name:新變量或現(xiàn)有變量的名稱(chēng).
  • shape:新變量或現(xiàn)有變量的形狀.
  • dtype:新變量或現(xiàn)有變量的類(lèi)型(默認(rèn)為 DT_FLOAT).
  • initializer:創(chuàng)建變量的初始化器.
  • regularizer:一個(gè)函數(shù)(張量 - >張量或無(wú));將其應(yīng)用于新創(chuàng)建的變量的結(jié)果將被添加到集合 tf.GraphKeys.REGULARIZATION_LOSSES 中,并可用于正則化.
  • trainable:如果為 True,還將變量添加到圖形集合:GraphKeys.TRAINABLE_VARIABLES.
  • collections:要將變量添加到其中的圖形集合鍵的列表.默認(rèn)為 [GraphKeys.LOCAL_VARIABLES].
  • caching_device:可選的設(shè)備字符串或函數(shù),描述變量應(yīng)該被緩存以讀取的位置.默認(rèn)為變量的設(shè)備,如果不是 None,則在其他設(shè)備上進(jìn)行緩存.典型的用法的在使用該變量的操作所在的設(shè)備上進(jìn)行緩存,通過(guò) Switch 和其他條件語(yǔ)句來(lái)復(fù)制重復(fù)數(shù)據(jù)刪除. 
  • partitioner:(可選)可調(diào)用性,它接受要?jiǎng)?chuàng)建的變量的完全定義的 TensorShape 和 dtype,并且返回每個(gè)坐標(biāo)軸的分區(qū)列表(當(dāng)前只能對(duì)一個(gè)坐標(biāo)軸進(jìn)行分區(qū)).
  • validate_shape:如果為假,則允許使用未知形狀的值初始化變量.如果為真,則默認(rèn)情況下,initial_value 的形狀必須是已知的.
  • use_resource:如果為假,則創(chuàng)建一個(gè)常規(guī)變量.如果為真,則創(chuàng)建一個(gè)實(shí)驗(yàn)性的 ResourceVariable,而不是具有明確定義的語(yǔ)義.默認(rèn)為假(稍后將更改為真).
  • custom_getter:可調(diào)用的,將第一個(gè)參數(shù)作為真正的 getter,并允許覆蓋內(nèi)部的 get_variable 方法.custom_getter 的簽名應(yīng)該符合這種方法,但最經(jīng)得起未來(lái)考驗(yàn)的版本將允許更改:def custom_getter(getter, *args, **kwargs).還允許直接訪(fǎng)問(wèn)所有 get_variable 參數(shù):def custom_getter(getter, name, *args, **kwargs).創(chuàng)建具有修改的名稱(chēng)的變量的簡(jiǎn)單標(biāo)識(shí)自定義 getter 是:python def custom_getter(getter, name, *args, **kwargs): return getter(name + '_suffix', *args, **kwargs) 

返回值:

創(chuàng)建或存在Variable(或者PartitionedVariable,如果使用分區(qū)器).

可能引發(fā)的異常:

  • ValueError:當(dāng)創(chuàng)建新的變量和形狀時(shí),在變量創(chuàng)建時(shí)違反重用,或當(dāng) initializer 的 dtype 和 dtype 不匹配時(shí).在 variable_scope 中設(shè)置重用.
以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)