initializer在c語(yǔ)言中是參數(shù)初始化的意思。Initializer是所有初始化方法的父類,不能直接使用,如果想要定義自己的初始化方法,需要繼承子類,所以一般只有單目初始化會(huì)用到這個(gè)類。
initializer是什么意思
1、Initializer是所有初始化方法的父類,不能直接使用,如果想要定義自己的初始化方法,請(qǐng)繼承此類。如果需要傳遞自定義的初始化器,則該初始化器必須是callable的,并且接收shape(將被初始化的張量shape)和dtype(數(shù)據(jù)類型)兩個(gè)參數(shù),并返回符合shape和dtype的張量。
2、initializer_list是C++11提供的新類型,定義在頭文件中。用于表示某種特定類型的值的數(shù)組,和vector一樣,initializer_list也是一種模板類型。
需要注意的是,initializer_list對(duì)象中的元素永遠(yuǎn)是常量值,我們無(wú)法改變initializer_list對(duì)象中元素的值。并且,拷貝或賦值一個(gè)initializer_list對(duì)象不會(huì)拷貝列表中的元素,其實(shí)只是引用而已,原始列表和副本共享元素。
3、一個(gè)initializer_list當(dāng)出現(xiàn)在以下兩種情況的被自動(dòng)構(gòu)造:當(dāng)初始化的時(shí)候使用的是大括號(hào)初始化,被自動(dòng)構(gòu)造。包括函數(shù)調(diào)用時(shí)和賦值。
當(dāng)涉及到for(initializer: list),list被自動(dòng)構(gòu)造成initializer_list對(duì)象。也就是說(shuō)initializer_list對(duì)象只能用大括號(hào){}初始化??截愐粋€(gè)initializer_list對(duì)象并不會(huì)拷貝里面的元素。其實(shí)只是引用而已。而且里面的元素全部都是const的。
initializer常用語(yǔ)法
1、tf.constant_initializer()也可以簡(jiǎn)寫為tf.Constant()
初始化為常數(shù),這個(gè)非常有用,通常偏置項(xiàng)就是用它初始化的。由它衍生出的兩個(gè)初始化方法:
a、 tf.zeros_initializer(), 也可以簡(jiǎn)寫為tf.Zeros()
b、tf.ones_initializer(), 也可以簡(jiǎn)寫為tf.Ones()
2、tf.truncated_normal_initializer()
或者簡(jiǎn)寫為tf.TruncatedNormal()
生成截?cái)嗾龖B(tài)分布的隨機(jī)數(shù),這個(gè)初始化方法好像在tf中用得比較多。
它有四個(gè)參數(shù)(mean=0.0, stddev=1.0, seed=None, dtype=dtypes.float32),分別用于指定均值、標(biāo)準(zhǔn)差、隨機(jī)數(shù)種子和隨機(jī)數(shù)的數(shù)據(jù)類型,一般只需要設(shè)置stddev這一個(gè)參數(shù)就可以了。
3、全零初始化:keras . initializers .Zeros()
4、全1初始化:keras . initializers .Ones()