Keras中Alexnet模型中预训练权重的应用

2024-05-16 21:25:54 发布

您现在位置:Python中文网/ 问答频道 /正文

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

#load the weight data
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属性。在


Tags: numpyloadkernelclass权重ndarrayinitializerweights
1条回答
网友
1楼 · 发布于 2024-05-16 21:25:54

首先构造模型,不需要设置任何初始值设定项。然后按照层在模型中出现的相同顺序将所有权重放入列表中(例如,conv1_权重、conv1_bias、conv2_权重、conv2_bias等),然后调用模型的set_weights方法:

model.set_weights(weights)

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

^{pr2}$

相关问题 更多 >