是否可以在 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 数组列表设置权重,请参阅 答案
是否可以在 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 数组列表设置权重,请参阅