Keras库提供了一种方便的方式来加载预训练模型。预训练模型通常是在大型数据集上训练的,如ImageNet,这些模型已经学习到了大量的特征和模式。通过加载预训练模型,我们可以利用这些学到的知识来加速我们的模型训练过程,或者直接使用这些模型来进行预测。
from keras.applications import VGG16
# 加载预训练的VGG16模型
model = VGG16(weights='imagenet')
# 打印模型的结构
model.summary()
?在这个例子中,首先从keras.applications模块导入了VGG16模型。然后,我们使用weights参数指定了我们要加载的预训练模型。
from keras.applications import VGG16
from keras import models
from keras import layers
#加载预训练的VGG16模型
#定义基础模型,使用预训练的VGG16模型,输入图像尺寸为150x150,有3个颜色通道
base_model = VGG16(weights='imagenet', include_top=False, input_shape=(150, 150, 3))
#创建一个Sequential模型容器
model = models.Sequential()
#将基础模型添加到顺序模型中
model.add(base_model)
#在基础模型输出后接入一个Flatten层,将多维输入一维化,常用在从卷积层到全连接层的过渡
model.add(layers.Flatten())
#在Flatten层后添加一个全连接层,神经元数量为256,激活函数为ReLU
model.add(layers.Dense(256, activation='relu'))
#在全连接层后添加一个输出层,神经元数量为1,激活函数为Sigmoid,用于二分类问题
model.add(layers.Dense(1, activation='sigmoid'))
#冻结预训练模型的所有层,以便在训练过程中不更新它们的权重
for layer in base_model.layers:
layer.trainable = False # 将基础模型的每一层设置为不可训练,即冻结这些层
#编译模型
#定义模型的损失函数、优化器和评估指标
model.compile(loss='binary_crossentropy', optimizer='rmsprop', metrics=['accuracy'])