2022年秋季学期人工神经网络第五次作业
Posted 卓晴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2022年秋季学期人工神经网络第五次作业相关的知识,希望对你有一定的参考价值。
- 说明:
- 本次作业是针对这学期经典神经网络中的内容,主要涵盖竞争神经网络课程内容相关的算法。
- 完成作业可以使用你所熟悉的编程语言和平台,比如 C,C++、MATLAB、Python等。
- 作业要求链接: : https://blog.csdn.net/zhuoqingjoking97298/article/details/128182347?csdn_share_tail="type"%3A"blog"%2C"rType"%3A"article"%2C"rId"%3A"128182347"%2C"source"%3A"zhuoqingjoking97298"
01 网络对比
一、作业内容
1、作业要求
对比不同经典神经网络算法在同一数据集合上的分类效果。这些算法包括:BP网络、RBF网络、SVM网络以及SOM网络。
从下面给定的数据集合中任选其中两个数据集合,分别对比上述四种方法在分类效果方面的结果,讨论分类问题在不同网络下如何实现。
2、数据集合
作业所使用的数据集合来自于MATLAB中的分类数据集和,对比几种不同的神经网络在分类方面的效果。
可以从后面所建议的MATLAB(2016A)自带的六个数据集合中任何选择两个数据集合进行对比实验,也可以自选其他的数据集合。六个数据集分别是:
* simpleclass_dataset
* iris_dataset
* cancer_dataset
* thynoid_dataset
* glass_dataset
* wine_dataset
如果使用Phython神经网络平台,可以将MATLAB中对应的的数据集合导出后进行实验。
(1)简单数据集合
[x,t]=simpleclass_dataset;
▲ 图8.1.2 简单数据集合分布
(2)鸢尾花
[x,t]= iris_dataset;
▲ 图8.1.3 数据集合在不同维度的投影
(3)肿瘤细胞
[x,t]=caner_dataset;
▲ 图8.1.4 数据集合在不同维度上的投影
(4)玻璃种类
[x,t]=glass_dataset;
▲ 图8.1.5 数据集合在不同维度上的投影
(5)甲状腺数据集合
MATLAB 调入数据集合命令:
[x,t]=thyroid_dataset;
▲ 图8.1.6 数据集合在不同维度上的投影
(6)葡萄酒产地
[x,t]=wine_dataset;
▲ 图8.1.7 数据集合在不同维度上的投影
3、建立神经网络
在 MATLAB(2016a版本之后) 对应的建立网络算法命令分别为:
- BP网络:nprtool
- RBF网络:newrb
- SVM分类算法:fitcsvm
- SOM网络:selforgmap
对应MATLAB中的神经网络工具包:
▲ 图1.1.1 MATLAB 中对应的神经网络工具包
MATLAB中相应的建立网络进行实验的代码示例:
(1)建立分类网络
[x,t]=simpleclass_dataset;'
plot(x(1,:),x(2,:),'+')
net=patternnet(10);
net=train(net,x,t);
view(net)
y=net(x)
plotconfusion(t,y)
(2)建立自组织特征映射网络
x = simplecluster_dataset;
plot(x(1,:),x(2,:),'+')
net = selforgmap([8 8]);
net = train(net,x);
view(net)
y = net(x);
classes = vec2ind(y);
二、参考答案
02 深度网络
一、作业内容
1、作业要求
- 练习搭建深度学习网络基本网络(CNN)实现数据分类与参数回归;
- 掌握深度学习训练中基本方法:
- 训练集、测试机、验证集合的划分;
- 训练过程中的超参调试:学习速率、样本批次数量、归一化处理
- 对于样本增强、正则参数调整、Dropout选取等
- 熟悉几大类深度网络特性以及应用;
针对后面给出的六种数据集合,具体的作业要求参见数据集合前面的介绍。
2、实验平台
搭建深度神经网络完成作业,可以选择自己熟悉的实验环境完成,包括但不限于:
- 百度的 AI Studio 2021 ANN课程,发布算力卡;
- MATLAB
- Keras, Pytorch
- 华为,阿里,Google AI云平台等
(1)AI Studio
请大家根据网络学堂公布的AI Studio 邀请码进入课堂,可以使用到百度提供的算力卡以及获得作业中的AI Studio工程数据集合。
▲ 图1.2.1 AI Studio 学习界面
大家进入AI Studio之后可以根据其中相关文档自行联系搭建基本深度学习网络,来完成作业要求。
(2)MATLAB
对于没有PYTHON基础的同学可以使用MATLAB 2019b完成作业。
在学校内可以免费安装2019b之后版本的MATLAB软件,详细的安装说明可以参见 MTALAB深度学习2019 中的相关介绍。
▲ 图1.2.3 MATLAB 中深度学习网络设计界面
▲ 图1.2.4 在MATLAB中搭建深度学习网络
(3)Python
具有python基础的同学可以参考 《Python核心编程(第二版)》,TensorFlow、Pytorch和Keras三个深度学习框架 。
对应的文档连接分别为:
▲ 图1.2.5 TENSORFLOW开发深度学习网络
▲ 图1.2.6 pyTorch开发深度学习网络
▲ 图1.2.7 Keras 开发深度学习网络
3、数据库以及下载
作业中所需要的数据库,可以在课程文件中下载第五次作业数据文件。也可以在AI Studio中找到对应的作业文件。
实验数据总共有六组实验数据:
- 水果与动物数据:图片目录压缩文件;
- MNIST数据;MATLAB数据格式
- CIFAR10数据集合;MATLAB数据格式
- 转动数字数据集合;MATLAB数据格式
- 危险品数据基集合;MATLAB数据格式
- AI Studio工程数据集合;AI Studio中数据文件
前五种数据集合可以在网络学堂的“课程文件”中下载,其中MNIST,CIFAR10,转动数字,危险品数据是MATLAB数据格式。如果使用其它深度学习平台,可以从MATLAB读取并转存成所需要的格式。
下面是网络学堂中课程文件下载的第四次作业数据集合解压缩之后的文件目录,其中包括有五个数据集合。
├─CIFAR-10
├─FORBIDDEN
├─FruitAnimal
├─MNIST
└─ROTATEDIGIT
六种经典数据集合都在MATLAB中可以找到。
二、数据库
1、水果与动物
(1)数据集合简介
请设计一个CNN,完成对于给定水果(五类)和动物(五类)总共十类物体的识别。
数据库还是第一次作业中,请大家设计BP网络识别所使用的动物,水果数据集合。只是在第一次作业中,要求仅仅是将Apriltag,数字,动物,水果这四种物品分出所属的大类。但本次作业中只使用其中的动物、水果两大类,供十小类的物体,要求识别它们的小类别。
▲ 图2.1.1 水果与动物数据库的样本
数据库图片可以由网络学堂数据文件下载。也可以在AI Studio的公开数据集合中下载: 五种水果与五种动物数据集合 : https://aistudio.baidu.com/aistudio/datasetdetail/120001
▲ 图2.1.2 AI Studio 数据集合
下载文件之后,加压缩会得到两个目录:水果、动物。它们各自包括五个子目录,其中分别存放着大约100张左右的水果、动物图片,用于训练和测试。
├─FruitAnimal
│ ├─动物
│ │ └─动物
│ │ ├─牛
│ │ ├─狗
│ │ ├─猪
│ │ ├─猫
│ │ └─马
│ └─水果
│ └─水果
│ ├─榴莲
│ ├─橙子
│ ├─苹果
│ ├─葡萄
│ └─香蕉
(2)数据处理预处理
在训练网络之前,大家可以对数据库进行预处理和增强;
Ⅱ.图片预处理
- 尺寸归一化: 数据库中的图片尺寸已经归一在283×283,可以自行选择是否做进一步的调整图片尺寸;
Ⅲ.数据库增强
为了提高训练之后的网络泛化能力,可以选择适当的图片处理方法,对于训练数据集合进行增强:
- 图片旋转
- 图片亮度调整
- 图片色度调整
- 图片尺度变化
- 图片增噪声
(3)作业要求
1. 构建深度学习网络,对于水果动物数据集合完成小类别识别任务;
2. 讨论在不同的网络结构,参数数量对于网络识别精度的影响;
3. 讨论与对比网络训练超参、数据库增强对于网络识别精度的影响;
4. 寻找一个兼顾网络模型大小与识别性能的网络,即模型参数少,识别性能下降不多的网络。
(4)参考答案
对于第一题的参考答案可以参见如下两篇博文:
2、MNIST
(1)数据库简介
MNIST数据集合是手写体数字识别图片,图片是尺寸为28×28的灰度图片。
▲ 图3.1.1 mnist手写出谁出图片
MNIST数据库官方下载: THE MNIST DATABASE of handwritten digits 。
在网络学堂中给出了MATLAB格式的MNIST数据库。使用MATLAB命令load(‘mnist.mat’)可以将附件数据库:
MNIST下的数据文件调入MATLAB。其中包含有四个变量:
(1) test_images: 10000×784 int32
- 测试集合10000张手写体数字图片,图片大小为28×28,
- 灰度图片,取值范围(0~255).
(2) test_labels: 1×10000 int32
- 测试集合数字图片的标签:取值0~9
(3) train_images: 60000×784 int32
- 训练集合60000张数字手写体图片,格式与测试集合相同。
(4) train_labels: 1×60000 int32
- 训练集合数字图片的标签:取值0~9
该数据集合在各大深度学习框架内基本上都有相应的连接可以直接下载,大家也可以直接使用。
(2)作业要求
① 构造两类深度学习网络对MNIST数据集合完成数字分类任务。一类是由全连接层构成的深度学习网络;另一类是带有卷积层的神经网络。
② 讨论两类神经网络在不同的网络参数下的训练收敛情况、测试精度的变化情况。
③ 探索寻找到一个能够兼顾网络模型大小与识别性能相对优化的网络模型,即模型参数少,识别性能下架不多。
(3)参考答案
如果在PaddlePaddle中完成作业,可以看一下实验指导:
3、CIFAR-10
(1)数据库简介
对CIFAR-10 数据集的分类是机器学习中一个公开的基准测试问题,其任务是对一组大小为32x32的RGB图像进行分类,这些图像涵盖了10个类别:飞机, 汽车, 鸟, 猫, 鹿,狗, 青蛙, 马, 船以及卡车。
▲ 图4.1.1 CIFAR-10数据库
CIFAR-10数据集合可以从如下网站下载: http://www.cs.toronto.edu/~kriz/cifar.html
在CIFAR-10数据目录中包括有以下六个数据文件:
(1) data_batch_1.mat
(2) data_batch_2.mat
(3) data_batch_3.mat
(4) data_batch_4.mat
(5) data_batch_5.mat
(6) test_batch.mat
(7) batches.meta.mat:label_names,各类别的名称
以上数据集合在调入MATLAB之后,都会包括有:
- data:10000×3072 uint8:图片信息
- labels:10000×1 uint8
在MATLAB中可以使用如下命令显示图片的内容:
imshow(permute(reshape(data(1,:),[32,32,3]),[2,1,3]))
数据命令中这里的参数’1’是对应第一个图片,可以将其修改成其它1~10000之间的数字来显示其它的图片。
想了解更多信息请参考CIFAR-10 page,以及Alex Krizhevsky写的技术报告
(2)作业要求
① 建立一个用于识别图像的相对较小的卷积神经网络,完成CIFAR-10数据集合的识别问题。
- 建立一个规范的网络结构,训练并进行评估;
- 为建立更大规模更加复杂的模型提供一个范例
选择CIFAR-10是因为它的复杂程度足以用来检验TensorFlow中的大部分功能,并可将其扩展为更大的模型。与此同时由于模型较小所以训练速度很快,比较适合用来测试新的想法,检验新的技术。
② 大家可以参见网络上的“CIFAR-10 教程”来讨论卷积神经网络中如下各部分参数对于卷积神经网络训练的影响“
- 相关核心数学对象,如卷积、修正线性激活、最大池化以及局部响应归一化;
- 训练过程中一些网络行为的可视化,这些行为包括输入图像、损失情况、网络行为的分布情况以及梯度;
- 算法学习参数的移动平均值的计算函数,以及在评估阶段使用这些平均值提高预测性能;
- 实现了一种机制,使得学习率随着时间的推移而递减;
- 如果有条件,可以讨论网络在多个GPU上并行训练,多个GPU之间实现参数共享和更新变量值。
③ 讨论数据增强对于网络性能的改善。
- 讨论DROP-OUT机制对于网络训练和泛华能力的影响。
(3)参考答案
如果在PaddlePaddle中完成作业,可以参考:
4、旋转数字
(1)数据库简介
ROTATEDIGIT数据集合是采集到机械电能表显示的数字。这类数字中包含有数字滚轮在不同角度下数字的图片。这些数字不同角度除了对应了数字本身,还代表了整数之间的小数分量。
▲ 图5.1.1 机械电表上的旋转数字
在ROTATEDIGIT目录下包括有如下六个数据文件:
▲ 图5.1.2 六个数据文件
将数据库使用MATLAB命令LOAD调入之后,会产生以下数据变量:
1. digitsize: 表示数字图像的尺寸
2. digit:1000×2128×3,数字图片。前面是数字图片的个数,中间是宽×高,后面是RGB三维。
3. labels:数字标签:0~9
4. fraction:表示数字整数之后的小数。即反映了数字旋转的程度。fraction部分,有的数据集合存在,有的不存在。
(2)作业要求
① 选择合适的神经网络,完成对数据集合的字符识别。
② 讨论使用某一类数字集合训练之后的网络,在另外数字集合上的泛化性能。
③ 讨论网络正则化的方法对于网络泛化能力的影响:
1. 对于网络权系数范数约束;
2. 对输入样本增加噪声;
3. 对输入样板进行变形增强;
4. 使用Drop-out技术训练网络
④ 对于有Fraction标签的数据集合,构造一个具有输出带有小数点数字输出的回归网络。并讨论它与前面分类网络在网络结构,训练方法等方面的特点。
(3)参考答案
实验指导可以参见: 2021年人工神经网络第四次作业-第四题:旋转的数字 。
![▲ 图5.2.1 第四次作业时间指导](https://img-blog.csdnimg.cn/18203ec24fde476483f7b344b2e5848c.gif#pic_center 0 )
▲ 图5.2.1 第四次作业时间指导
5、危险品识别
(1)数据库简介
FORBIDDEN数据集合是拍摄的一些物品的X-射线图片。同一个物品拍摄有不同的角度:
▲ 图6.1.1 危险品数据库
在目录FORBIDDEN中存在三个数据文件:
1. XRAYDATA-96-80.MAT: 尺寸为96×80灰度图像
2. XRAYDATA-120-100.MAT:尺寸为120×100灰度图像
3. XRAYDATA-240-200.MAT:尺寸为240×200灰度图像
三个文件的内容都是一样的,只是图片的尺寸有区别。
数据文件使用MATLAB命令load调入内存后,会产生三个变量:
- images: 7401×48000 uint8: 物品图片
- labels: 物品种类标签
- labeldir:物品拍摄方位
同一个物品在拍摄的过程中,大都存在三个不同的方位,每个方位具有18个左右不同角度。
在图片集合中,同一物品在同一方位下,不同的角度拍摄的图片在数据集合中是顺序排列的。可以根据这个信息获得图频拍设的角度。
在数据集合中,标号小于400的样本为单个物品的数据,标号大于等于400的样本为多个物品重叠后的样品。大家实验中,可以只使用标号小于400的样品。
(2)作业要求
① 构造合适的神经网络,对于数据库中物品X射线图片进行识别分类。可以根据物品不同的大小,在训练网络之前对于图片进行预处理。
② 讨论实验结果中,造成识别错误的因素包括哪些。
③ 探讨如何利用图频的序列信息完成物品的识别的方法。根据自己的时间和经验,选做是否可以通过LSTM网络来利用图频的不同角度序列信息提高识别的精度。
④ 可以根据自己的时间和经验,选做一些目标定位的神经网络:比如YOLO3,SSD等来进行实验。
(3)参考答案
作业实验指导说明可以参见:2021年人工神经网络第四次作业-第五题:危险品识别 。
▲ 图6.2.1 第五次作业中用于识别的数据库
(4)AI Studio数据库
(5)数据库简介
在AI Studio中存在很多的公开数据集合。可以自行选择其中的数据集合用于识别、检测和参数回归。
▲ 图7.1.1 AI Studio中的公开数据集合
下面给出几种典型的数据集合:
Ⅱ.交通标志
下载地址:https://aistudio.baidu.com/aistudio/datasetdetail/49552
该数据集合给出了5018个从驾驶员视角的路面交通标志。标识的种类有图片的名称给出。
▲ 图7.1.2 驾驶员视角对应的道路上的交通标示
Ⅲ.目标检测
目标检测数据集合集 : https://aistudio.baidu.com/aistudio/datasetdetail/103743
该集合中给出了五类目标检测的集合,在数据集合中分别包含了检测的图片以及对应的XML格式的标示结果。
├─barricade
│ ├─Annotations
│ └─JPEGImages
├─facemask
│ ├─Annotations
│ └─JPEGImages
├─fire
│ ├─Annotations
│ └─JPEGImages
├─MidAutumn
│ ├─Annotations
│ └─JPEGImages
└─roadsign_voc
├─Annotations
└─JPEGImages
▲ 图7.1.3 人脸检测
▲ 图7.1.4 着火现场火源检测
Ⅳ.水果数据集合
5种水果数据集 : https://aistudio.baidu.com/aistudio/datasetdetail/12236
解压缩之后的水果所在的目录:
├─cantaloupe
├─carrot
├─cherry
├─cucumber
└─watermelon
▲ 图7.1.5 蔬菜数据集合
Ⅴ.车道监测
无人车车道检测数据集合 : https://aistudio.baidu.com/aistudio/datasetdetail/3625
▲ 图7.1.6 车道线检测数据集合
Ⅵ.交通灯
红绿灯及交通标志 : https://aistudio.baidu.com/aistudio/datasetdetail/117209
该数据集合中包含有红绿灯以及交通标志的检测图片和标注。
▲ 图7.1.7 交通灯目标检测
Ⅶ.作业要求
参照前面五个数据集合的要求,设计深度神经网络完成数据集合中分类和定位要求。
■ 相关文献链接:
- 2021年人工神经网络第四次作业要求:第七题
- MATLAB深度学习 2019
- 《Python核心编程(第二版)》,TensorFlow、Pytorch和Keras三个深度学习框架
- 五种水果与五种动物数据集合
- 2021年人工神经网络第四次作业-第一题:LeNet对于水果与动物进行分类
- 对于FAMNIST中的十种动物和水果进行识别测试
- THE MNIST DATABASE of handwritten digits
- 2021年人工神经网络第四次作业 - 第二题MNIST手写体识别
- 2021年人工神经网络第四次作业 - 第三题Cifar10
- 在Paddle中利用AlexNet测试CIFAR10数据集合
- 2021年人工神经网络第四次作业-第四题:旋转的数字
- 2021年人工神经网络第四次作业-第五题:危险品识别
- 目标检测数据集合集
- 5种水果数据集
- 无人车车道检测数据集合
- 红绿灯及交通标志
● 相关图表链接:
- 图8.1.2 简单数据集合分布
- 图8.1.3 数据集合在不同维度的投影
- 图8.1.4 数据集合在不同维度上的投影
- 图8.1.5 数据集合在不同维度上的投影
- 图8.1.6 数据集合在不同维度上的投影
- 图8.1.7 数据集合在不同维度上的投影
- 图1.1.1 MATLAB 中对应的神经网络工具包
- 图1.2.1 AI Studio 学习界面
- 图1.2.3 MATLAB 中深度学习网络设计界面
- 图1.2.4 在MATLAB中搭建深度学习网络
- 图1.2.5 TENSORFLOW开发深度学习网络
- 图1.2.6 pyTorch开发深度学习网络
- 图1.2.7 Keras 开发深度学习网络
- 图2.1.1 水果与动物数据库的样本
- 图2.1.2 AI Studio 数据集合
- 图3.1.1 mnist手写出谁出图片
- 图4.1.1 CIFAR-10数据库
- 图5.1.1 机械电表上的旋转数字
- 图5.1.2 六个数据文件
- 图5.2.1 第四次作业时间指导
- 图6.1.1 危险品数据库
- 图6.2.1 第五次作业中用于识别的数据库
- 图7.1.1 AI Studio中的公开数据集合
- 图7.1.2 驾驶员视角对应的道路上的交通标示
- 图7.1.3 人脸检测
- 图7.1.4 着火现场火源检测
- 图7.1.5 蔬菜数据集合
- 图7.1.6 车道线检测数据集合
- 图7.1.7 交通灯目标检测
以上是关于2022年秋季学期人工神经网络第五次作业的主要内容,如果未能解决你的问题,请参考以下文章