深度学习模型搭建:基于 VGG19 的微调模型
深度学习模型搭建:基于 VGG19 的微调模型
本篇博客将详细介绍如何基于预训练的 VGG19 模型搭建一个微调模型,用于图像分类任务。
模型搭建代码
# 加载 VGG19 模型并进行微调
input_tensor = tf.keras.layers.Input(shape=(IMG_HEIGHT, IMG_WIDTH, 3)) # 输入层
base_model = tf.keras.applications.VGG19(input_tensor=input_tensor, weights='imagenet', include_top=False) # 加载 VGG19 模型
x = base_model.output # 获取 VGG19 模型的输出
x = GlobalAveragePooling2D()(x) # 添加全局平均池化层
x = Dense(1024, activation='relu')(x) # 添加全连接层
x = Dense(512, activation='relu')(x) # 添加全连接层
x = Dense(64, activation='relu')(x) # 添加全连接层
predictions = Dense(len(classes), activation='softmax')(x) # 添加输出层
model = Model(inputs=base_model.input, outputs=predictions)
opt = tf.keras.optimizers.Nadam(learning_rate=0.00001) # 定义优化器
model.compile(optimizer=opt, loss='categorical_crossentropy', metrics=['accuracy']) # 编译模型
model.summary() # 输出模型结构
代码解析
-
加载预训练模型: 我们首先加载预训练的 VGG19 模型作为基础模型,并设置
include_top=False,表示不加载 VGG19 模型的顶层分类器。 -
添加池化层: 在 VGG19 模型的输出层后,我们添加了一个全局平均池化层 (GlobalAveragePooling2D),用于将特征图压缩成一个固定长度的向量。
-
添加全连接层: 为了适应我们的分类任务,我们添加了三个全连接层 (Dense),并使用 ReLU 激活函数。
-
添加输出层: 最后,我们添加了一个输出层 (Dense),用于生成最终的分类结果。
-
构建模型: 使用
Model类将基础模型的输入和输出连接起来,构建了完整的模型。 -
定义优化器: 使用
Nadam优化器,并设置学习率为 0.00001。 -
编译模型: 使用
compile方法编译模型,并指定损失函数为categorical_crossentropy,评估指标为accuracy。 -
输出模型结构: 使用
model.summary()输出模型结构,可以查看模型的层次结构和参数数量。
总结
本篇博客详细介绍了基于 VGG19 模型的微调模型搭建过程,包括加载预训练模型、添加池化层、全连接层和输出层,并使用 Nadam 优化器进行训练。希望这篇博客能够帮助你更好地理解深度学习模型搭建的过程。
原文地址: https://www.cveoy.top/t/topic/gVH 著作权归作者所有。请勿转载和采集!