我正在通过Keras的卷积神经网络(CNN)研究基于2D RGB像素的图像分类问题。我的完整CNN模型可以找到here。
我执行以下操作来训练/适合CNN模型:
model = my_CNN_unet()
model_checkpoint = ModelCheckpoint('testweights_{epoch:02d}.hdf5')
model.fit(x_trn, y_trn, batch_size=50, epochs=3, verbose=1, shuffle=True,
callbacks=[model_checkpoint], validation_data=(x_val, y_val))
如何更改我的代码,以便我使用知名CNN架构(例如VGG
和Inception
答案 0 :(得分:1)
正如人们在评论中提到的,keras.applications
为您提供了访问预训练模型的方法。举个例子:
import keras
from keras.models import Model
model_base = keras.applications.vgg16.VGG16(include_top=False, input_shape=(*IMG_SIZE, 3), weights='imagenet')
output = model_base.output
# Add any other layers you want to `output` here...
output = Dense(len(categories), activation='softmax')(output)
model = Model(model_base.input, output)
for layer in model_base.layers:
layer.trainable = False
model.compile(optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy'])
return model
您可以像训练以前的CNN一样训练此模型。 Keras应用程序提供对许多模型的访问,例如Inception,VGG16,VGG19,ResNet等 - 您可以以类似的方式访问它们。我写了一篇博文,介绍如何在Keras中使用转移学习来构建图像分类器:https://blogs.msdn.microsoft.com/devops/2015/09/04/supplying-run-time-parameters-to-tests/。它有一个可以查看的工作代码示例。