Deep Learning
===
# 1. Leaf_classification_Selfnet.py
## 1.1 介绍说明
使用Pytorch搭建**AlexNet**模型结构(非预训练模型),并训练该模型用于Flavia数据集的图片分类。
## 1.2 训练集和验证集文件的划分
train_val_split(imgdir, traindir, valdir, split_rate=0.8)函数的作用是将数据集文件按一定比例划分为训练集和验证集,其中参数**img_dir**为数据集文件路径,**train_dir**为划分后的训练集文件保存路径,**val_dir**为划分后的验证集文件保存路径,**split_rate**为训练集和验证集的划分比例(默认为0.8)。
## 1.3 数据处理和图像增强
1. train_data_transforms、val_data_transforms和test_data_transforms分别定义了训练集、验证集和测试集图片的预处理操作,其中包含了图像压缩、图像增强和数据归一化等操作。
2. train_data_process(train_data_path)、val_data_process(val_data_path)和test_data_process(test_data_path)函数的作用分别是对训练集、验证集和测试集图片进行预处理,并打包成多个batch用于后面训练、验证和测试。其中Data.DataLoader(train_data, batch_size=32, shuffle=True, num_workers=0)函数中的参数**batach_size**为每个batch中包含的图片数量,**shuffle**为是否将数据随机打乱,**num_workers**为加载batch数据的进程数(Windows中num_workers=0,否则会出错)。
## 1.4 模型搭建
ConvNet(nn.Module)类定义了自己搭建的卷积神经网络模型结构,以及数据的前向传播过程。
## 1.5 模型训练
1. train_model(model, traindataloader, valdataloader, criterion, device, optimizer, scheduler, num_epochs=25)函数定义了模型的训练和验证过程,其中参数**model**为定义的网络模型,**traindataloader**为训练集数据,**valdataloader**为验证集数据,**criterion**为使用的损失函数,**device**为使用的运算平台('cuda'或'cpu'),**optimizer**为超参数的优化算法,**scheduler**为学习率的调整方式,**num_epochs**为训练的epoch数。
2. test_model(model, testdataloader, label, device)函数定义了模型的测试过程,其中参数**model**为训练好的网络模型,**testdataloader**为测试集数据,**label**为测试集图片的标签,**device**为使用的运算平台('cuda'或'cpu')。
3. train_model_process(myconvnet)函数的作用是获取上述定义的参数,并分别调用train_model()函数和test_model()函数对模型进行训练和测试。
# 2. Leaf_classification_Alexnet.py
## 2.1 介绍说明
使用Pytorch搭建**AlexNet**模型结构(非预训练模型),并训练该模型用于Flavia数据集的图片分类。
## 2.2 训练集和验证集文件的划分
train_val_split(imgdir, traindir, valdir, split_rate=0.8)函数的作用是将数据集文件按一定比例划分为训练集和验证集,其中参数**img_dir**为数据集文件路径,**train_dir**为划分后的训练集文件保存路径,**val_dir**为划分后的验证集文件保存路径,**split_rate**为训练集和验证集的划分比例(默认为0.8)。
## 2.3 数据处理和图像增强
1. train_data_transforms、val_data_transforms和test_data_transforms分别定义了训练集、验证集和测试集图片的预处理操作,其中包含了图像压缩、图像增强和数据归一化等操作。
2. train_data_process(train_data_path)、val_data_process(val_data_path)和test_data_process(test_data_path)函数的作用分别是对训练集、验证集和测试集图片进行预处理,并打包成多个batch用于后面训练、验证和测试。其中Data.DataLoader(train_data, batch_size=32, shuffle=True, num_workers=0)函数中的参数**batach_size**为每个batch中包含的图片数量,**shuffle**为是否将数据随机打乱,**num_workers**为加载batch数据的进程数(Windows中num_workers=0,否则会出错)。
## 2.4 模型搭建
AlexNet(nn.Module)类定义了AlexNet的模型结构,以及数据的前向传播过程。
## 2.5 模型训练
1. train_model(model, traindataloader, valdataloader, criterion, device, optimizer, scheduler, num_epochs=25)函数定义了模型的训练和验证过程,其中参数**model**为定义的网络模型,**traindataloader**为训练集数据,**valdataloader**为验证集数据,**criterion**为使用的损失函数,**device**为使用的运算平台('cuda'或'cpu'),**optimizer**为超参数的优化算法,**scheduler**为学习率的调整方式,**num_epochs**为训练的epoch数。
2. test_model(model, testdataloader, label, device)函数定义了模型的测试过程,其中参数**model**为训练好的网络模型,**testdataloader**为测试集数据,**label**为测试集图片的标签,**device**为使用的运算平台('cuda'或'cpu')。
3. train_model_process(myconvnet)函数的作用是获取上述定义的参数,并分别调用train_model()函数和test_model()函数对模型进行训练和测试。
## 2.6 实验结果
![alexnet](https://user-images.githubusercontent.com/39607836/149730815-08689dd4-268b-4004-9d46-049d11106cca.png)
# 3. Leaf_classification_GoogLeNet.py
## 3.1 介绍说明
使用Pytorch搭建**GoogLeNet**模型结构(非预训练模型),并训练该模型用于Flavia数据集的图片分类。
## 3.2 训练集和验证集文件的划分
train_val_split(imgdir, traindir, valdir, split_rate=0.8)函数的作用是将数据集文件按一定比例划分为训练集和验证集,其中参数**img_dir**为数据集文件路径,**train_dir**为划分后的训练集文件保存路径,**val_dir**为划分后的验证集文件保存路径,**split_rate**为训练集和验证集的划分比例(默认为0.8)。
## 3.3 数据处理和图像增强
1. train_data_transforms、val_data_transforms和test_data_transforms分别定义了训练集、验证集和测试集图片的预处理操作,其中包含了图像压缩、图像增强和数据归一化等操作。
2. train_data_process(train_data_path)、val_data_process(val_data_path)和test_data_process(test_data_path)函数的作用分别是对训练集、验证集和测试集图片进行预处理,并打包成多个batch用于后面训练、验证和测试。其中Data.DataLoader(train_data, batch_size=32, shuffle=True, num_workers=0)函数中的参数**batach_size**为每个batch中包含的图片数量,**shuffle**为是否将数据随机打乱,**num_workers**为加载batch数据的进程数(Windows中num_workers=0,否则会出错)。
## 3.4 模型搭建
1. Inception(nn.Module)类定义了Inception模块结构。
2. GoogLeNet()函数定义了GoogLeNet的网络结构,其中由多个Inception模块构成。
## 3.5 权重初始化
weights_initialize(model)函数的作用是对网络模型中卷积层的权重使用Kaiming初始化。
## 3.6 模型训练
1. train_model(model, traindataloader, valdataloader, criterion, device, optimizer, scheduler, num_epochs=25)函数定义了模型的训练和验证过程,其中参数**model**为定义的网络模型,**traindataloader**为训练集数据,**valdataloader**为验证集数据,**criterion**为使用的损失函数,**device**为使用的运算平台('cuda'或'cpu'),**optimizer**为超参数的优化算法,**scheduler**为学习率的调整方式,**num_epochs**为训练的epoch数。
2. test_model(model, testdataloader, label, device)函数定义了模型的测试过程,其中参数**model**为训练好的网络模型,**testdataloader**为测试集数据,**label**为测试集图片的标签,**device**为使用的运算平台('cuda'或'cpu')。
3. train_model_process(myconvnet)函数的作用是获取上述定义的参数,并分别调用train_model()函数和test_model()函数对模型进行训练和测试。
## 3.7 实验结果
![Googlenet](https://user-images.githubusercontent.com/39607836/149730925-07812d10-8a97-4a53-9f32-f47d229c69d3.png)
# 4.
程序员张小妍
- 粉丝: 1w+
- 资源: 3474
最新资源
- 机械设计raun内外盒组装包装设备含工程图sw17可编辑非常好的设计图纸100%好用.zip
- 机械设计板式过滤设备sw14可编辑非常好的设计图纸100%好用.zip
- 机械设计UV光解+活性炭设备sw14可编辑非常好的设计图纸100%好用.zip
- 数据分析-08-B站美食视频图鉴 干饭人干饭魂干饭都是人上人(包含数据和代码)
- 机械设计阿密龙水炮模型sw12可编辑非常好的设计图纸100%好用.zip
- 机械设计宝马车悬架系统模型step非常好的设计图纸100%好用.zip
- xssaaaaaaaaaaaaa
- 婚庆摄影小程序ssm.zip
- 校园顺路代送微信小程序ssm.zip
- 微信小程序线上教育商城ssm.zip
- 基于微信小程序投票评选系统的设计与实现ssm.zip
- 基于微信小程序的二手物品交易平台ssm.zip
- 机械设计背板字体视觉检测设备 step非常好的设计图纸100%好用.zip
- 在线厨艺平台的设计与实现微信小程序ssm.zip
- 基于微信小程序的小区管理系统的设计ssm.zip
- 即时空教室查询小程序ssm.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈