初始化方法
优质
小牛编辑
146浏览
2023-12-01
初始化方法定义了对Keras层设置初始化权重的方法
不同的层可能使用不同的关键字来传递初始化方法,一般来说指定初始化方法的关键字是init
,例如:
model.add(Dense(64, init='uniform'))
预定义初始化方法
uniform
lecun_uniform: 即有输入节点数之平方根放缩后的均匀分布初始化(LeCun 98).
normal
identity:仅用于权值矩阵为方阵的2D层(
shape[0]=shape[1]
)orthogonal:仅用于权值矩阵为方阵的2D层(
shape[0]=shape[1]
),参考Saxe et al.zero
glorot_normal:由扇入扇出放缩后的高斯初始化(Glorot 2010)
glorot_uniform
he_normal:由扇入放缩后的高斯初始化(He et al.,2014)
he_uniform
指定初始化方法传入的可以是一个字符串(必须与上面某种预定义方法匹配),也可以是一个可调用的对象.如果传入可调用的对象,则该对象必须包含两个参数:shape
(待初始化的变量的shape)和name
(该变量的名字),该可调用对象必须返回一个(Keras)变量,例如K.variable()
返回的就是这种变量,下面是例子:
from keras import backend as K
import numpy as np
def my_init(shape, name=None):
value = np.random.random(shape)
return K.variable(value, name=name)
model.add(Dense(64, init=my_init))
你也可以按这种方法使用keras.initializations
中的函数:
from keras import initializations
def my_init(shape, name=None):
return initializations.normal(shape, scale=0.01, name=name)
model.add(Dense(64, init=my_init))
【Tips】稍后(一两周吧……)我们希望将各个初始化方法的特点总结一下,请继续关注