【易入门】卷积神经网络基于pytorch复现

 openMMLab提供丰富的算法平台,底层基于pytorch进行封装,去年隆重迎来了2.0版本

 同时还可以进行多平台进行模型部署,加速计算机视觉技术落地,提高行业研发效率,服务国计民生!

 可能有人会说什么是机器学习?为什么要去学习机器学习,不能直接去入门深度学习嘛......一系列问题!机器学习就是从数据中学习经验,以解决特定问题,让机器去帮我们分析事物,提高生活质量为前提的标准。或许,有些人听不太明白,没关系,您只要知道,为了让自己有份质量工作,为了提供生活乐趣。

 

 这里我提供了一份基于鸢尾花数据进行分类,Iris数据集是常⽤的分类实验数据集,由Fisher, 1936收集整理。Iris也称鸢尾花卉数据集,是⼀类多重变量分析的数据集。关于数据集的具体介绍:

load和fetch返回的数据类型datasets.base.Bunch(字典格式)
data:特征数据数组,是 [n_samples * n_features] 的⼆维
numpy.ndarray 数组
target:标签数组,是 n_samples 的⼀维 numpy.ndarray 数组
DESCR:数据描述
feature_names:特征名,新闻数据,⼿写数字、回归数据集没有
target_names:标签名

 机器学习的基本流程就是:1.获取数据2.数据预处理3.特征工程4.模型训练及评估5.模型保存

神经网络:为了提高多层感知器的欠拟合提高模型的泛化能力,进行非线性分类进行区分,就是一类拟合能力非常强的函数。

 ⼈⼯神经⽹络(Artificial Neural Network,简写为ANN)也简称为神经⽹络(NN),是⼀种模仿⽣物神经⽹络结构和功能的计算模型。⼈脑可以看做是⼀个⽣物神经⽹络,由众多的神经元连接⽽成。各个神经元传递复杂的电信号,树突接收到输⼊信号,然后对信号进⾏处理,通过轴突输出信号。那怎么构建⼈⼯神经⽹络中的神经元呢?

 受⽣物神经元的启发,⼈⼯神经元接收来⾃其他神经元或外部源的输⼊,每个输⼊都有⼀个相关的权值(w),它是根据该输⼊对当前神经元的重要性来确定的,对该输⼊加权并与其他输⼊求和后,经过⼀个激活函数f,计算得到该神经元的输出。

 

 神经⽹络中信息只向⼀个⽅向移动,即从输⼊节点向前移动,通过隐藏节点,再向输出节点移动,⽹络中没有循环或者环。其中的基本构件是:

输⼊层:即输⼊x的那⼀层

输出层:即输出y的那⼀层

隐藏层:输⼊层和输出层之间都是隐藏层

 特点是:同⼀层的神经元之间没有连接。第N层的每个神经元和第N-1层的所有神经元相连(这就是fullconnected的含义),第N-1层神经元的输出就是第N层神经元的输⼊。每个连接都有⼀个权值。

 

 如何选择激活函数?

隐藏层优先选择RELU激活函数如果ReLu效果不好,那么尝试其他激活,如Leaky ReLu等。如果你使⽤了Relu,需要注意⼀下Dead Relu问题,避免出现⼤的梯度从⽽导致过多的神经元死亡。不要使⽤sigmoid激活函数,可以尝试使⽤tanh激活函数

输出层⼆分类问题选择sigmoid激活函数多分类问题选择softmax激活函数回归问题选择identity激活函数

 梯度下降法简单来说就是⼀种寻找使损失函数最⼩化的⽅法。⼤家在机器学习阶段已经学过该算法,所以我们在这⾥就简单的回顾下,从数学上的⻆度来看,梯度的⽅向是函数增⻓速度最快的⽅向,那么梯度的反⽅向就是函数减少最快的⽅向,所以有:

 其中,η是学习率,如果学习率太⼩,那么每次训练之后得到的效果都太⼩,增⼤训练的时间成本。如果,学习率太⼤,那就有可能直接跳过最优解,进⼊⽆限的训练中。解决的⽅法就是,学习率也需要随着训练的进⾏⽽变化。

 卷积神经网络:

 CNN⽹络主要有三部分构成:卷积层、池化层和全连接层构成,其中卷积层负责提取图像中的局部特征;池化层⽤来⼤幅降低参数量级(降维);全连接层类似⼈⼯神经⽹络的部分,⽤来输出想要的结果。

卷积层是卷积神经⽹络中的核⼼模块,卷积层的⽬的是提取输⼊特征图的特征,如下图所示,卷积核可以提取图像中的边缘信息。那卷积是怎么进⾏计算的呢?卷积运算本质上就是在滤波器和输⼊数据的局部区域间做点积。

 相信很多聪明的帅哥美女们发现在上述卷积过程中,特征图⽐原始图减⼩了很多,我们可以在原图像的周围进⾏padding,来保证在卷积过程中特征图⼤⼩不变。padding就是在四周补上层数来保证大小不变。

 池化层迎来降低了后续⽹络层的输⼊维度,缩减模型⼤⼩,提⾼计算速度,并提⾼了Feature Map的鲁棒性,防⽌过拟合,它主要对卷积层学习到的特征图进⾏下采样(subsampling)处理,主要由两种:1.最⼤池化  2.平均池化

 全连接层位于CNN⽹络的末端,经过卷积层的特征提取与池化层的降维后,将特征图转换成⼀维向量送⼊到全连接层中进⾏分类或回归的操作。

 我说的比较简谱,可能大部分人都不太懂吧,没关系,我提供了一份卷积神经网络的代码,对你们进行入门普查。

 Quickstart — PyTorch Tutorials 1.13.1+cu117 documentation

 各位帅哥美女们!这里我提供了我自己发布的:深度学习pytorch进行实现基本MNIST分类任务附代码深度学习pytorch进行实现基本MNIST分类任务附代码

欢迎各位下载,在本地跑!日进一步,总会一大步,让我们一起进步吧!

这里还有一些大佬级别的教案,欢迎借鉴!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值