W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
函數(shù):tf.make_template
make_template(
name_,
func_,
create_scope_now_=False,
unique_name_=None,
custom_getter_=None,
**kwargs
)
定義在:tensorflow/python/ops/template.py
參見指南:變量>共享變量
給定一個任意函數(shù),將其包裝,以便它進行變量共享.
這將 func_ 在模板中進行包裝,并對其進行部分評估.模板是在第一次被調(diào)用時創(chuàng)建變量并在其后重用它們的函數(shù).為了使 func_ 與模板兼容,它必須具有以下屬性:
在下面的例子中,z 和 w 將用相同的 y 縮放.重要的是要注意,如果我們沒有分配 scalar_name 和為 z 和 w 分配不同的名稱,ValueError 異常將拋出,因為它不能重用該變量.
def my_op(x, scalar_name):
var1 = tf.get_variable(scalar_name,
shape=[],
initializer=tf.constant_initializer(1))
return x * var1
scale_by_y = tf.make_template('scale_by_y', my_op, scalar_name='y')
z = scale_by_y(input1)
w = scale_by_y(input2)
作為安全防護裝置, 如果訓練變量是通過調(diào)用 tf.Variable 創(chuàng)建的,則返回的函數(shù)將在第一次調(diào)用后引發(fā) ValueError.
如果所有這些都是真的,則模板將強制執(zhí)行以下2個屬性:
def my_op(x, scalar_name):
var1 = tf.get_variable(scalar_name,
shape=[],
initializer=tf.constant_initializer(1))
return x * var1
with tf.variable_scope('scope') as vs:
scale_by_y = tf.make_template('scale_by_y', my_op, scalar_name='y')
z = scale_by_y(input1)
w = scale_by_y(input2)
# Creates a template that reuses the variables above.
with tf.variable_scope(vs, reuse=True):
scale_by_y2 = tf.make_template('scale_by_y', my_op, scalar_name='y')
z2 = scale_by_y2(input1)
w2 = scale_by_y2(input2)
根據(jù) create_scope_now_ 的值,完全可變范圍可能在第一次調(diào)用時或構(gòu)造時捕獲.如果此選項設置為 True,則通過對模板的重復調(diào)用創(chuàng)建的所有張量將有一個額外的尾部 _ N+1 到它們的名稱,因為在模板構(gòu)造函數(shù)中首次輸入作用域時,不會創(chuàng)建任何張量.
注:name_、func_ 和 create_scope_now_ 有一個尾部下劃線,以減少與 kwargs 沖突的可能性.
參數(shù):
返回值:
一個函數(shù),用于封裝一組應創(chuàng)建并重用的變量.將創(chuàng)建一個封閉作用域,無論在何處調(diào)用 make_template,或者在調(diào)用結(jié)果的地方,這取決于 create_scope_now_ 的值.無論值如何,首次調(diào)用該模板時,都將進入該范圍,而不重復使用,并調(diào)用 func_ 創(chuàng)建變量,這些變量得保證是唯一的.所有后續(xù)調(diào)用都將重新輸入范圍并重新使用這些變量.
可能引發(fā)的異常:
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: