KERAS型号的NO_TOP权重



预训练的深度学习模型具有与它们相关的2种类型的权重,顶部(意味着密集的完全连接的层(和没有_top(删除密集的完全连接的层(。我想知道如何训练NO_TOP权重

的模型

for Eg:我有一个体系结构,我想创建在CIFAR10数据上训练它的权重。

由于您在谈论CIFAR10,我将为您提供图像分类的示例。
首先,您可以从没有顶层的Keras获得预训练的模型。

from keras.applications.vgg16 import VGG16
base_model = VGG16(weights='imagenet', include_top=False, input_shape=(48, 48, 3))

然后,您为分类任务添加新层。

x = base_model.output
x = Flatten()(x)
x = Dense(512, activation='elu', kernel_initializer='he_normal')(x)
prediction = Dense(10, activation='softmax', kernel_initializer='he_normal')(x)

最后一层有10个单元,因为CIFAR10有10个类。

您创建模型。

model = Model(inputs=base_model.input, outputs=prediction)

您获取CIFAR10数据。

from keras.datasets import cifar10
(Xtrain, Ytrain), (Xtest, Ytest) = cifar10.load_data()
Ytrain = to_categorical(Ytrain)
Ytest = to_categorical(Ytest)

编译和火车。

model.compile(Adam(), loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(Xtrain, Ytrain, batch_size=64, epochs=1, validation_data=(Xtest, Ytest))

NOTE :在这里,训练将改变您所有层的权重(预训练层 新层(。您可能需要在训练之前冻结预训练的层以保持训练有素的重量。

最新更新