优化器前言优化器是引导神经网络更新参数的工具,深度学习在计算出损失函数之后,需要利用优化器来进行反向传播,完成网络参数的更新。在这个过程中,便会使用到优化器,优化器可以利用计算机数值计算的方法来获取损失函数最小的网络参数。在深度学习中,不同的优化器只是定义了不同的一阶动量和二阶动量,一阶动量是与梯度相关的函数,二阶动量是与梯度平方相关的函数。常用的优化器主要有随机梯度下降法、Momentum、AdaGrad、RMSProp和Adam优化器。神经网络利用优化器来更新网络参数步骤如下:计算当前时刻t损失函数关于网络参数w的梯度$$ g_t=\nabla loss= \frac{\partial loss}{\partial(w_t)} $$计算当前时刻t一阶动量$m_t$和二阶动量$V_t$计算当前时刻t下降梯度$$ \eta_t=lr\bullet m_t / \sqrt{V_t} $$计算下一时刻t+1参数$$ w_{t+1}=w_t-\eta_t=w_t-lr \bullet m_t / \sqrt{V_t} $$SGD 随机梯度下降法目前,神经网络最常用的为随机梯度下降(Stoch
深度学习中Dropout原理解析1. Dropout简介1.1 Dropout出现的原因在机器学习的模型中,如果模型的参数太多,而训练样本又太少,训练出来的模型很容易产生过拟合的现象。在训练神经网络的时候经常会遇到过拟合的问题,过拟合具体表现在:模型在训练数据上损失函数较小,预测准确率较高;但是在测试数据上损失函数比较大,预测准确率较低。过拟合是很多机器学习的通病。如果模型过拟合,那么得到的模型几乎不能用。为了解决过拟合问题,一般会采用模型集成的方法,即训练多个模型进行组合。此时,训练模型费时就成为一个很大的问题,不仅训练多个模型费时,测试多个模型也是很费时。综上所述,训练深度神经网络的时候,总是会遇到两大缺点:容易过拟合费时Dropout可以比较有效的缓解过拟合的发生,在一定程度上达到正则化的效果。1.2 什么是DropoutDropout可以作为训练深度神经网络的一种trick供选择。在每个训练批次中,通过忽略一半的特征检测器(让一半的隐层节点值为0),可以明显地减少过拟合现象。这种方式可以减少特征检测器(隐层节点)间的相互作用,检测器相互作用是指某些检测器依赖其他检测器才能发挥
图解卷积层stride,padding,kernel_size 和卷积前后特征图尺寸之间的关系kernel_size:卷积核大小padding:特征图填充宽度stride:卷积步长这些值的设置让卷积核可以从图片的第一个像素刚好扫描到最后一个像素,如下图所示:不难发现,经过卷积后的特征图尺寸等于卷积核滑动的次数 $+1$,在这里等于$5$。现在假设卷积前的特征图宽度为 N ,卷积后输出的特征图宽度为 $M$ ,那么它们和上述设置的参数之间的关系是怎样的呢?首先可以确定的是padding之后的矩阵宽度等于$N+2×padding$ 。另一方面,卷积核的滑动次数等于 $M−1$根据上图的关系,可以建立下面的等式$$ N+2×padding=(M−1)×stride+kernel\_size $$于是输出矩阵的宽度就等于$$ M=\frac{N+2\times padding-kernel\_size}{stride}+1 $$特别地,如果需要卷积操作不改变矩阵宽度,即$M=N$ ,则填充宽度为$$ padding=\frac{(N-1)\times stride - N + kernel\_
MAX Pooling 最大值池化max pooling 的操作如下图所示:整个图片被不重叠的分割成若干个同样大小的小块(pooling size)。每个小块内只取最大的数字,再舍弃其他节点后,保持原有的平面结构得出 output。注意区分max pooling(最大值池化)和卷积核的操作区别:池化作用于图像中不重合的区域(这与卷积操作不同)这个图中,原来是4*4的图片。由于不会重合,所以filter的大小和步长stride是相等的,为2.粉色区域最大值为6,得到的该区域结果是6,绿色是8,黄色是3,紫色是4.有一个动图:PS:发现其实是有重叠池化的(overlapping pooling)相邻池化窗口之间会有重叠区域,此时filter的大小sizeX>stride步长。Max Pooling的作用作用1:invariance(不变性)invariance(不变性)translation(平移)不变性rotation(旋转)不变性scale(尺度)不变性translation平移图中左边两个大图,表示数字1,但是两个的位置不同,上者经过向右平移得到下者。经过池化后,得到了相同的结
CUDA-CUDNN-pytorch安装下载地址:cudacuDNN 需要登录加入pytorchCUDA安装在NVIDIA控制面板左下角系统信息里的组件查看对应cuda版本{bs-font color="#FF0000"} 可以选择现在显卡可以支持的最新版本cuda 可以直接选择11.7 {/bs-font}在上面的网站下载对应版本的cuda和cudnn直接精简模式一直下一步安装安装完成在系统环境变量中查看是否有下面这四个环境我的后面两个没用自动加入环境NVCUDASAMPLES_ROOTNVCUDASAMPLES11_0_ROOT验证是否安装成功在cmd中输入 nvcc -V查看cuDNN 安装在上面的网站下载对应的压缩文件讲压缩包中的三个文件夹解压到cuda的安装目录中往系统环境变量中的 path 添加如下路径(根据自己的路径进行修改)C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\bin C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\libnvvp
第三章 感知机感知机(perceptron)是二类分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别,取$+1$和$-1$二值。感知机对应于输入空间(特征空间)中将实例划分为正负两类的分离超平面,属于判别模型。感知机学习旨在求出将训练数据进行线性划分的分离超平面,为此,导入基于误分类的损失函数,利用梯度下降法对损失函数进行极小化,求得感知机模型。感知机学习算法具有简单而易于实现的优点,分为原始形式和对偶形式。感知机预测是用学习得到的感知机模型对新的输入实例进行分类。1. 感知机模型定义2.1(感知机)定义$2.1$(感知机):假设输入空间(特征空间)是$X \subseteq R^n$,输出空间是$Y=\{+1,-1\}$。输入$x\in X$表示实例的特征向量,对应于输入空间(特征空间)的点;输出$y\in Y$表示实例的类别。由输入空间到输出空间的如下函数:(感知机)$$ f(x)=sign(w\cdot x + b) \tag {2.1} $$$w$和$ b$为感知机模型参数,$w\in R^n$叫做权值(weight)活权值向量(weight vector),$b\
一只胖橘