TensorFlow變量函數(shù):tf.get_local_variable

2018-10-24 16:15 更新
函數(shù):tf.get_local_variable
get_local_variable(
    *args,
    **kwargs
)

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

參見指南:變量>共享變量

獲取一個(gè)現(xiàn)有的局部變量或創(chuàng)建一個(gè)新的.
該函數(shù)中的行為與 get_variable 中的相同,只是將變量添加到 LOCAL_VARIABLES 集合中,并將 trainable 設(shè)置為 False.此函數(shù)使用當(dāng)前變量范圍前綴名稱,并執(zhí)行重用檢查.有關(guān)重用如何工作的詳細(xì)說明, 請參見變量范圍.下面是一個(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.

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

類似地,如果正則化器(regularizer)是 None(默認(rèn)),則將使用在變量范圍內(nèi)傳遞的默認(rèn)正則符號(如果為 None,則默認(rèn)情況下不執(zhí)行正則化).

如果提供了分區(qū),則返回 PartitionedVariable.作為張量訪問這個(gè)對象,會返回沿分區(qū)軸的碎片.

一些有用的分區(qū)可用.參見,例如:variable_axis_size_partitioner 和 min_max_variable_partitioner.

參數(shù):

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

返回值:

已創(chuàng)建或已存在的 Variable(如果使用了分區(qū),則為 PartitionedVariable).

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

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號