簡體   English   中英

在Keras的Alexnet模型中使用預先訓練的權重

[英]Using pre-trained weights in Alexnet model in Keras

我正在嘗試使用來自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屬性。

首先構造模型,而無需設置任何初始化程序。 然后按照圖層在模型中出現的順序將所有權重放入列表中(例如conv1_weights,conv1_biases,conv2_weights,conv2_biases等),然后調用模型的set_weights方法:

model.set_weights(weights)

另外,您可以分別設置每個圖層的權重:

model.layers[layer_index].set_weights([layer_weights, layer_biases])

# or using layer's name if you have specified names for them
model.get_layer(layer_name).set_weights([layer_weights, layer_biases])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM