initializer在c語言中是參數(shù)初始化的意思。Initializer是所有初始化方法的父類,不能直接使用,如果想要定義自己的初始化方法,需要繼承子類,所以一般只有單目初始化會用到這個類。


initializer是什么意思
1、Initializer是所有初始化方法的父類,不能直接使用,如果想要定義自己的初始化方法,請繼承此類。如果需要傳遞自定義的初始化器,則該初始化器必須是callable的,并且接收shape(將被初始化的張量shape)和dtype(數(shù)據(jù)類型)兩個參數(shù),并返回符合shape和dtype的張量。

2、initializer_list是C++11提供的新類型,定義在頭文件中。用于表示某種特定類型的值的數(shù)組,和vector一樣,initializer_list也是一種模板類型。
需要注意的是,initializer_list對象中的元素永遠是常量值,我們無法改變initializer_list對象中元素的值。并且,拷貝或賦值一個initializer_list對象不會拷貝列表中的元素,其實只是引用而已,原始列表和副本共享元素。
3、一個initializer_list當出現(xiàn)在以下兩種情況的被自動構(gòu)造:當初始化的時候使用的是大括號初始化,被自動構(gòu)造。包括函數(shù)調(diào)用時和賦值。
當涉及到for(initializer: list),list被自動構(gòu)造成initializer_list對象。也就是說initializer_list對象只能用大括號{}初始化。拷貝一個initializer_list對象并不會拷貝里面的元素。其實只是引用而已。而且里面的元素全部都是const的。
initializer常用語法
1、tf.constant_initializer()也可以簡寫為tf.Constant()
初始化為常數(shù),這個非常有用,通常偏置項就是用它初始化的。由它衍生出的兩個初始化方法:
a、 tf.zeros_initializer(), 也可以簡寫為tf.Zeros()
b、tf.ones_initializer(), 也可以簡寫為tf.Ones()
2、tf.truncated_normal_initializer()
或者簡寫為tf.TruncatedNormal()
生成截斷正態(tài)分布的隨機數(shù),這個初始化方法好像在tf中用得比較多。
它有四個參數(shù)(mean=0.0, stddev=1.0, seed=None, dtype=dtypes.float32),分別用于指定均值、標準差、隨機數(shù)種子和隨機數(shù)的數(shù)據(jù)類型,一般只需要設(shè)置stddev這一個參數(shù)就可以了。
3、全零初始化:keras . initializers .Zeros()
4、全1初始化:keras . initializers .Ones()