-
特征提取(feature extraction): 使用之前网络学到的表示来从新样本中提取出有趣的特征。然后将这些特征输入一个新的分类器,从头开始训练
用于图像分类的卷积神经网络包含两部分:首先是一系列池化层和卷积层,最后是一个密集连接分类器。第一部分叫作模型的卷积基(convolutional base)。对于卷积神经网络而言,特征提取就是取出之前训练好的网络的卷积基,在上面运行新数据,然后在输出上面训练一个新的分类器
# 以 VGG 网络为例,构建模型示例如下: # VGG16卷积基实例化 from keras.applications import VGG16 conv_base = VGG16(weights='imagenet', include_top=False, input_shape=(150, 150, 3)) # 创建模型 from keras import models from keras import layers model = models.Sequential() model.add(conv_base) model.add(layers.Flatten()) model.add(layers.Dense(256, activation='relu')) model.add(layers.Dense(1, activation='sigmoid')) conv_base.trainable = False # 冻结参数
-
微调模型(fine-tuning):与特征提取互为补充。对于用于特征提取的冻结的模型基(块1 + 块2),微调是指将其顶部的几层“解冻”(块2),并将这解冻的几层(块2)和新增加的部分(块3,本例中是全连接分类器)联合训练
(1) 在已经训练好的基网络(base network)上添加自定网络(块3)
(2) 冻结基网络(块1 + 块2)
(3) 训练所添加的部分(块3)
(4) 解冻基网络的一些层(块2)
(5) 联合训练解冻的这些层和添加的部分(块2 + 块3)
- 特征提取时已经完成了前三个步骤,微调模型额外进行了 4、5 步