我正在使用Keras功能API,我想知道:什么时候内核初始化了?是在创建图层期间,如
x = Dense(32, kernel_initializer='glorot_uniform')(x)
还是在编译模型的过程中? e.g。
model.compile(optimizer='rmsprop', loss='categorical_crossentropy')
我想这不是在model.fit(...)
期间,或者我无法微调预先训练过的模型,因为先前的权重会丢失。我错过了什么吗?
答案 0 :(得分:0)
事实证明,Layer
超类定义了方法build(input_shape)
,所有具有权重的派生类(例如Dense
和Conv2D
)必须实现。在该方法中,除了别的之外,还创建并初始化权重变量。这个build
实际上是由Layer
方法__call__
调用的,这是行中调用的方法
x = Dense(32, kernel_initializer='glorot_uniform')(x)
在构造函数__init__
之后。
参考:https://github.com/fchollet/keras/blob/master/keras/engine/topology.py