在Keras中使用AlexNet模型的预训练权重

我正在尝试使用来自bvlc_alexnet.npy的预训练权重来实现AlexNet:

# 加载权重数据
weights_dic = numpy.load('bvlc_alexnet.npy', encoding='bytes').item()
conv1W = weights_dic["conv1"][0] # <class 'numpy.ndarray'> (11, 11, 3, 96)
conv1b = weights_dic["conv1"][1] # <class 'numpy.ndarray'> (96,)
model = Sequential()
model.add(Conv2D(96, kernel_size=[11, 11], kernel_initializer = <???>, 
              bias_initializer = <???>, dtype=np.ndarray), activation='relu', strides=4, padding="same")

在这里,我不知道如何将这些权重(conv1Wconv1b)分配给kernel_initializerbias_initializer属性。


回答:

首先构建模型,不需要设置任何初始化器。然后将所有权重按模型中层出现的顺序放入一个列表中(例如conv1_weights, conv1_biases, conv2_weights, conv2_biases等),然后调用模型的set_weights方法:

model.set_weights(weights)

或者,您可以单独设置每一层的权重:

model.layers[layer_index].set_weights([layer_weights, layer_biases])
# 或者如果您为层指定了名称,可以使用层的名称
model.get_layer(layer_name).set_weights([layer_weights, layer_biases])

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注