# 以 ResNet50 迁移学习为例,一般将 ResNet50 去掉最后一层后的网络作为新任务的特 征提取子网络,即利用 ImageNet 上面预训练的特征提取方法迁移到我们自定义的数据集 上,并根据自定义任务的类别追加一个对应数据类别数的全连接分类层,从而可以在预训 练网络的基础上可以快速、高效地学习新任务。首先利用 Keras 模型乐园加载 ImageNet 预训练的ResNet50网络:import tensorflow as tf
from tensorflow import keras
# 加载ImageNet预训练网络模型,并去掉最后一层
resnet = keras.applications.ResNet50(weights='imagenet', include_top=False)
resnet.summary()# weights指定加载已训练好的权重
通过自定义输入张量构建InceptionV3
from tensorflow.keras.applications import InceptionV3
from tensorflow.keras.layers import Input
# 构建自定义输入层
inputs = Input(shape=(224,224,3))# 加载inceptionV3预训练模型,并指定自定义输入层
model = InceptionV3(input_tensor=inputs, weights='imagenet', include_top=True)
model.summary()
从VGG19的任意中间层抽取特征
from tensorflow.keras.applications import VGG19
from tensorflow.keras.models import Model
base_model = VGG19(weights='imagenet')
model = Model(inputs=base_model.input, outputs=base_model.get_layer('blocak4_pool').outputs)