Keras加载预训练模型

发布时间:2023年12月30日

Keras库提供了一种方便的方式来加载预训练模型。预训练模型通常是在大型数据集上训练的,如ImageNet,这些模型已经学习到了大量的特征和模式。通过加载预训练模型,我们可以利用这些学到的知识来加速我们的模型训练过程,或者直接使用这些模型来进行预测。

常用的预训练模型

  • VGG16:VGG16是一个用于图像分类的卷积神经网络模型,由牛津大学的Visual Geometry Group开发。它使用连续的小滤波器来模拟人类视觉系统中的神经元。该模型在ImageNet数据集上进行了预训练,可以用于图像分类、目标检测和语义分割等任务。
  • VGG19:VGG19是VGG16的扩展,添加了更多的层和滤波器。与VGG16类似,VGG19也可以在ImageNet数据集上用于图像分类、目标检测和语义分割等任务。
  • ResNet50:ResNet50是一个深度残差网络模型,由微软开发。该模型通过引入残差块来改善了深度神经网络的训练问题。ResNet50在ImageNet数据集上进行了预训练,可以用于图像分类、目标检测和关键点检测等任务。
  • InceptionV3:InceptionV3是一个基于GoogleNet的卷积神经网络模型,由Google开发。该模型使用了一种名为“Inception模块”的结构,可以在单一神经网络中实现多种尺度的特征提取。InceptionV3在ImageNet数据集上进行了预训练,可以用于图像分类、目标检测和关键点检测等任务。
  • Xception:Xception是一个深度卷积神经网络模型,由纽卡斯尔大学开发。该模型使用了一种名为“分离卷积”的结构,可以提高模型的深度和宽度。Xception在ImageNet数据集上进行了预训练,可以用于图像分类、目标检测和语义分割等任务。

示例1

from keras.applications import VGG16

# 加载预训练的VGG16模型
model = VGG16(weights='imagenet')

# 打印模型的结构
model.summary()

?在这个例子中,首先从keras.applications模块导入了VGG16模型。然后,我们使用weights参数指定了我们要加载的预训练模型。

示例2

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'])

文章来源:https://blog.csdn.net/lymake/article/details/135308161
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。