归一化方法

Pytorch常用包

偶尔善良 提交于 2020-01-23 20:14:08
torch:张量的有关运算。如创建、索引、连接、转置、加减乘除、切片等 torch.nn: 包含搭建神经网络层的模块(Modules)和一系列loss函数。如全连接、卷积、BN批处理、dropout、CrossEntryLoss、MSELoss等 torch.nn.functional:常用的激活函数relu、leaky_relu、sigmoid等 torch.autograd:提供Tensor所有操作的自动求导方法 torch.optim:各种参数优化方法,例如SGD、AdaGrad、Adam、RMSProp等 torch.utils.data:用于加载数据 torch.nn.init:可以用它更改nn.Module的默认参数初始化方式 torchvision.datasets:常用数据集。MNIST、COCO、CIFAR10、Imagenet等 torchvision.modules:常用模型。AlexNet、VGG、ResNet、DenseNet等 torchvision.transforms:图片相关处理。裁剪、尺寸缩放、归一化等 -torchvision.utils:将给定的Tensor保存成image文件 来源: CSDN 作者: 立志正常毕业的二狗子 链接: https://blog.csdn.net/qq_43270479/article/details

tensorflow学习笔记——AlexNet

帅比萌擦擦* 提交于 2019-12-10 10:51:54
1,AlexNet网络的创新点   AlexNet将LeNet的思想发扬光大,把CNN的基本原理应用到了很深很宽的网络中。AlexNet主要使用到的新技术点如下:    (1)成功使用ReLU作为CNN的激活函数,并验证其效果在较深的网络超过了Sigmoid,成功解决了Sigmoid在网络较深时的梯度弥散问题。虽然ReLU激活函数在很久之前就被提出了,但直到AlexNet的出现才将其发扬光大。   在最初的感知机模型中,输入和输出的关系如下:   虽然只是单纯的线性关系,这样的网络结构有很大的局限性:即使用很多这样结构的网络层叠加,其输出和输入仍然是线性关系,无法处理有非线性关系的输入输出。因此,对每个神经元的输出做个非线性的转换也就是,将上面的加权求和的结果输入到一个非线性函数,也就是激活函数中。这样,由于激活函数的引入,多个网络层的叠加就不再是单纯的线性变换,而是具有更强的表现能力。   在网络层较少时,Sigmoid函数的特性能够很好的满足激活函数的作用:它把一个实数压缩至0到1之间,当输入的数字非常大的时候,结果会接近1,;当输入非常大的负数时,则会得到接近0的结果。这种特性,能够很好的模拟神经元在受刺激后,是否被激活向后传递信息(输出为0,几乎不被激活;输出为1,完全被激活)。Sigmoid函数一个很大的问题就是梯度饱和。观察Sigmoid函数的曲线,当输入的数字较大

BAT机器学习面试1000题系列

本小妞迷上赌 提交于 2019-12-06 14:35:20
几点声明: 1、本文的内容全部来源于七月在线发布的BAT机器学习面试1000题系列; 2、文章中带斜体的文字代表是本人自己增加的内容,如有错误还请批评指正; 3、原文中有部分链接已经失效,故而本人重新加上了新的链接,如有不当,还请指正。(也已用斜体标出) 4、部分答案由于完全是摘抄自其它的博客,所以本人就只贴出答案链接,这样既可以节省版面,也可以使排版更加美观。点击对应的问题即可跳转。 最后,此博文的排版已经经过本人整理,公式已用latex语法表示,方便读者阅读。同时链接形式也做了优化,可直接跳转至相应页面,希望能够帮助读者提高阅读体验,文中如果因为本人的整理出现纰漏,还请指出,大家共同进步! 1.请简要介绍下SVM。 SVM,全称是support vector machine,中文名叫支持向量机。SVM是一个面向数据的分类算法,它的目标是为确定一个分类超平面,从而将不同的数据分隔开。 扩展: 支持向量机学习方法包括构建由简至繁的模型:线性可分支持向量机、线性支持向量机及非线性支持向量机。当训练数据线性可分时,通过硬间隔最大化,学习一个线性的分类器,即线性可分支持向量机,又称为硬间隔支持向量机;当训练数据近似线性可分时,通过软间隔最大化,也学习一个线性的分类器,即线性支持向量机,又称为软间隔支持向量机;当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。

卷积神经网络(CNN)

耗尽温柔 提交于 2019-12-01 10:16:37
卷积神经网络( CNN ) 1.1 二维卷积层 卷积神经网络是含有卷积层的神经网络,均使用最常见的二维卷积层,它有高和宽两个空间维度,常用来处理图像数据。 1.1.1 二维互相关运算 在二维卷积层中,一个二维输入数组和一个二维核数组通过互相关运算输出一个二维数组。 输入一个高和宽均为3的二维数组,核数组的高和宽均为2,核数组在卷积计算中又称卷积核或过滤器,卷积核窗口(卷积窗口)的形状取决于卷积核的高和宽。 1.1.2 二维卷积层 二维卷积层将输入和卷积核做互相关运算,并加上一个标量偏差来得到输出。卷积层的模型参数包括卷积核与标量偏差。在训练模型时,通常先对卷积核随机初始化,然后不断迭代卷积核与偏差。 卷积窗口形状为p x q的卷积层称为p x q卷积层,说明卷积核的高和宽分别为p和q。 1.1.3 图像中物体边缘检测 卷积层的简单应用:检测图像中物体的边缘,即找到像素变化的位置。卷积层可以通过重复使用卷积核有效的表征局部空间。 1.1.4 通过数据学习核数组 例子:使用物体边缘检测中的输入数据x,输出数据y,来构造核数组k。首先构造一个卷积层,将卷积核初始化成随机数组,在每一次迭代中,使用平方误差来比较Y和卷积层的输出,然后计算梯度来更新权重。 1.15 特征图和感受野 特征图:二维卷积层输出的二维数组可以看做是输入在空间维度(宽和高)上某一级的表征。 感受野

浅析数据标准化和归一化,优化机器学习算法输出结果

送分小仙女□ 提交于 2019-11-27 21:28:42
关于标准化(standardization) 数据标准化能将原来的数据进行重新调整(一般也称为 z-score 规范化方法),以便他们具有标准正态分布的属性,即 μ=0 和 σ=1。其中,μ 表示平均值,σ 表示标准方差。数据标准化之后的形式可以按照如下公式进行计算: 如果我们是比较两个不同大小维度的数据,那么将这些数据标准化到以 0 为中心并且标准差为 1 的范围,这对许多的机器学习算法来说也是一般的要求。比如,从直觉上来说,我们可以将梯度下降看作一个特殊的例子。由于特征值 xj 在权重更新中发挥作用,那么某些权重可能比其他权重更新的速度更快,即: 其中,wj:=wj+Δwj,η 表示学习率,t 表示目标正确分类结果,o 表示模型的输出分类结果。 其他直观的例子包括 KNN 算法和一些聚类算法上面,都会使用这种数据标准化的方法。 事实上,我能想到唯一不需要数据标准化的算法就应该是基于决策树的算法了。我们来看一般的 CART 决策树算法。在这里我们不深入的分析信息熵的含义,我们可以把这个决策简单的想象成 is feature x_i >= some_val ? 。从直观上来讲,我们真的不需要来关心数据特征在哪个大小维度(比如,不同数量级,不同领域 —— 这些真的不关心)。 那么,在哪些算法中特征数据标准化是比较重要的呢?比如下面这些算法: 对于基于欧几里得距离的 KNN 算法