Keras中的预训练模型怎么使用

1949idc 2年前 (2024-09-18) 阅读数 464 #深度学习

在Keras中使用预训练模型有两种常见的方法:迁移学习和模型微调。

  1. 迁移学习: 迁移学习是指使用预训练模型的特征提取器来提取新数据集的特征,并将这些特征输入到自定义的分类器中进行训练。在Keras中,可以通过加载预训练模型的权重并冻结其所有层来实现迁移学习。下面是一个示例代码:
from keras.applications import ResNet50
from keras.preprocessing import image
from keras.applications.resnet50 import preprocess_input
from keras.models import Model
from keras.layers import Dense, GlobalAveragePooling2D

# 加载ResNet50预训练模型
base_model = ResNet50(weights='imagenet', include_top=False)

# 添加自定义的分类层
x = base_model.output
x = GlobalAveragePooling2D()(x)
x = Dense(1024, activation='relu')(x)
predictions = Dense(num_classes, activation='softmax')(x)

model = Model(inputs=base_model.input, outputs=predictions)

# 冻结预训练模型的所有层
for layer in base_model.layers:
    layer.trainable = False

# 编译模型并训练
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit_generator(...)

  1. 模型微调: 模型微调是指解冻预训练模型的一部分层,并重新训练这些层以适应新数据集。在Keras中,可以通过解冻预训练模型的部分层来实现模型微调。下面是一个示例代码:
# 解冻预训练模型的部分层
for layer in model.layers[:100]:
    layer.trainable = False
for layer in model.layers[100:]:
    layer.trainable = True

# 编译模型并继续训练
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit_generator(...)

通过这两种方法,您可以灵活地使用预训练模型,并根据自己的需求进行迁移学习或模型微调。

版权声明

本文内容由互联网用户自发贡献,该文观点仅代表作者本人
本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

© 2010 首途云安 & 厦门硕顿信息技术有限公司 & 闽ICP备11016866号  增值电信业务经营许可证:B1-20203020 地址:福建厦门思明区嘉禾路297号1806
高新技术企业
软件产品证书
计算机软件著作权
ISO认证
国家3A企业