是否可以在 model.add 的 keras 的 NN 中加载一定数量的权重或初始化程序?

Is it possible to load weight with definite amount or with an initializer in NN in keras in model.add?

是否可以在 model.add 的 keras 中加载 NN 权重?我想根据 Xavier 或其他初始化程序加载权重。我如何在 keras 中做到这一点?

例如,weight=[w1,w2,w3,w4]我们如何在 keras 中做到这一点?

例如,在TF中我们有:initializer=tf.contrib.layers.xavier_initializer()

假设 xxx.h5 是你的权重文件,做:

weights_path = 'path/xxx.h5'

你也可以像这样在keras中加载权重:

model.load_weights(weights_path, by_name=True)

其中 model 是您的 keras 模型,其权重架构与您要导入的权重匹配

可以使用层 kernel_initializer 属性根据特定初始化加载权重

model.add(Dense(2,kernel_initializer='glorot_normal'))

默认值为glorot_uniform

对于需要提供参数的初始化程序

from keras import initializers

model.add(Dense(64, kernel_initializer=initializers.random_normal(stddev=0.01))

正如你提到的 Xavier,在 Keras 中,Xavier uniform 和 Xavier normal 分别被称为 glorot uniform 和 glorot normal。

参考Keras Initializers了解更多初始化方法

编辑: 如果您想使用 numpy 数组列表设置权重,请参阅 答案