基于VGG16的迁移学习-训练自己的数据集

该博客介绍了使用VGG16进行迁移学习来实现三分类任务的方法。首先,加载预训练的VGG16模型并冻结其特征提取层,然后添加全局平均池化层和两个全连接层,最后通过训练调整顶部几层的参数。利用Keras库处理数据集,并绘制训练和验证的准确率及损失曲线。整个过程展示了如何构建和训练一个定制的深度学习模型。
摘要由CSDN通过智能技术生成

简介
本程序基于VGG16的进行迁移学习,通过训练自己的数据集实现三分类,通过冻结原网络的特征提取层,使卷积层和池化层的权重保持不变。由于待分类的数据与原先 VGG16 的分类数据不同,删除原来的全连接层,在特征提取层之后添加全局平均池化层(Global Average pooling),再增加两个全新的全连接层(Fully-connected layer ),最后一层全连接层分类数与数据集的类数相匹配,通过重新训练确定最后几层的参数信息,来实现分类目标。并用plot画出Training acc,validation acc,Training loss,validation loss。基于VGG16的迁移学习模型如图所示。在这里插入图片描述![在这里插入图片描述](https://img-blog.csdnimg.cn/20210325184301245.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1在这里插入图片描述
Nvbmd5b25nY2hhbzE5OTU=,size_16,color_FFFFFF,t_70)
在这里插入图片描述

import os
import numpy as np
from keras import Model
from keras.applications import VGG16
import matplotlib.pyplot as plt
from tensorflow.keras.preprocessing import image
from keras.layers import GlobalMaxPooling2D, Flatten, Dense, Dropout, GlobalAveragePooling2D
import random

def DataSet():
    train_path_A = 'C:/Users/HASee/Desktop/shilu/A/'
    train_path_B = 'C:/Users/HASee/Desktop/shilu/B/'
    train_path_C = 'C:/Users/HASee/Desktop/shilu/C/'

    imglist_train_A = os.listdir(train_path_A)
    imglist_train_B = os.listdir(train_path_B)
    imglist_train_C = os.listdir(train_path_C)

    X_train = np.empty((len(imglist_train_A) + len(imglist_train_B)+ len(imglist_train_C), 224, 224, 
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值