initializer在c语言中是参数初始化的意思。Initializer是所有初始化方法的父类,不能直接使用,如果想要定义自己的初始化方法,需要继承子类,所以一般只有单目初始化会用到这个类。
1、Initializer是所有初始化方法的父类,不能直接使用,如果想要定义自己的初始化方法,请继承此类。如果需要传递自定义的初始化器,则该初始化器必须是callable的,并且接收shape(将被初始化的张量shape)和dtype(数据类型)两个参数,并返回符合shape和dtype的张量。
2、initializer_list是C++11提供的新类型,定义在头文件中。用于表示某种特定类型的值的数组,和vector一样,initializer_list也是一种模板类型。
需要注意的是,initializer_list对象中的元素永远是常量值,我们无法改变initializer_list对象中元素的值。并且,拷贝或赋值一个initializer_list对象不会拷贝列表中的元素,其实只是引用而已,原始列表和副本共享元素。
3、一个initializer_list当出现在以下两种情况的被自动构造:当初始化的时候使用的是大括号初始化,被自动构造。包括函数调用时和赋值。
当涉及到for(initializer: list),list被自动构造成initializer_list对象。也就是说initializer_list对象只能用大括号{}初始化。拷贝一个initializer_list对象并不会拷贝里面的元素。其实只是引用而已。而且里面的元素全部都是const的。
1、tf.constant_initializer()也可以简写为tf.Constant()
初始化为常数,这个非常有用,通常偏置项就是用它初始化的。由它衍生出的两个初始化方法:
a、 tf.zeros_initializer(), 也可以简写为tf.Zeros()
b、tf.ones_initializer(), 也可以简写为tf.Ones()
2、tf.truncated_normal_initializer()
或者简写为tf.TruncatedNormal()
生成截断正态分布的随机数,这个初始化方法好像在tf中用得比较多。
它有四个参数(mean=0.0, stddev=1.0, seed=None, dtype=dtypes.float32),分别用于指定均值、标准差、随机数种子和随机数的数据类型,一般只需要设置stddev这一个参数就可以了。
3、全零初始化:keras . initializers .Zeros()
4、全1初始化:keras . initializers .Ones()