归一化

机器学习基础——简单易懂的K邻近算法,根据邻居“找自己”

天涯浪子 提交于 2020-03-11 09:52:34
本文始发于个人公众号: TechFlow ,原创不易,求个关注 今天的文章给大家分享机器学习领域非常简单的模型——KNN,也就是K Nearest Neighbours算法,翻译过来很简单,就是K最近邻居算法。这是一个经典的 无监督学习 的算法,原理非常直观,易于理解。 监督与无监督 简单介绍一下监督这个概念,监督是supervised的直译,我个人觉得不太准确,翻译成 有标注和无标注 可能更加准确。也就是说如果模型在学习的时候,既能够看到样本的特征又可以看到样本的结果,那么就是有监督学习,如果只能看到特征,但是并不能知道这些特征对应的结果,那么就是无监督学习。 之前我们介绍的线性回归和逻辑回归模型就是典型的有监督模型,因为模型在训练的时候知道样本的结果,并且根据我们设计的损失函数朝着贴近样本真实结果的方向“努力”。而今天介绍的KNN算法则是一个经典的无监督学习模型,算法在训练的时候并不知道正确的结果是什么,也因此模型根本没有损失函数这个概念,那么自然整个算法的运行原理也很监督模型大相径庭。 算法概述 其实KNN算法的原理非常简单,简单到只有一句话,就是 找到样本的K个邻居 ,然后这K个邻居出现次数最多的结果就是答案。 但是我们怎么定义邻居,又怎么找到这些邻居呢? 在回答这个问题之前,我们先来看一个例子。 假设现在有这么一个问题,我需要知道全城的用户有哪些用户有车

matlab学习笔记,持续更新

允我心安 提交于 2020-03-05 21:12:55
load data.txt可以加载数据,但要在一个文件夹里 regular_min=sort(d)可以将d从小到大排列 regular_max=sort(d,‘descend’)可以将d从小到大排列 [x,index]=sort(d),可以输出x是d从小到大排列,index是找到d原系列的序号 【转】mapminmax 是MATLAB实现归一化的工具包,默认: (1)将矩阵的每行分别进行归一化; (2)每行的最大值最小值作为每行归一化的xmin和xmax; (3)将数据归一化到[-1,1]. 若要将数据归一化到0到1之间,即y∈[0,1],使用 b = mapminmax(a,0,1); 若给与确定的最大值和最小值作为每行的xmin和xmax,使用: b =?mapminmax(a,0,1); PS.xmin = 0;? %0为最小值 PS.xmin = 230;? %230为最大值 【转】rand(m,n) 生成m行n列均匀分布在(0~1)之间的伪随机数 randn (m,n) 生成m行n列标准正态分布的伪随机数(均值为0,方差为1) rands(m,n) 生成m行n列均匀分布在(-1~1)之间的伪随机数 randi 生成均匀分布的伪随机整数 结构: 选择结构if If(’’) 执行内容; Eseif 执行内容; else(’’) 执行内容; end;

[pytorch] pytorch常用normalization函数详解

醉酒当歌 提交于 2020-03-01 23:15:29
[pytorch] pytorch常用normalization函数详解 BatchNorm LayerNorm InstanceNorm GroupNorm Normalization归一化 的使用在机器学习的领域中有着及其重要的作用,笔者在以前的项目中发现,有的时候仅仅给过了网络的feature加一层normzalize层,就可以让性能提高几个点,所以在这篇文章里详细介绍一下pytorch官方给出的几个normalization函数。 归一化层,目前主要有这几个方法, Batch Normalization (2015年)、 Layer Normalization (2016年)、 Instance 、 Normalization (2017年)、 Group Normalization (2018年)、 Switchable Normalization (2019年);这些归一化方法都是一些经典的paper中提出的,后来使用广泛之后pytorch就会封装好方便大家调用。 简单来收,将输入的图像shape记为[N, C, H, W],这几个方法主要的区别就是在, batchNorm是在batch上,对NHW做归一化,对小batchsize效果不好; layerNorm在通道方向上,对CHW归一化,主要对RNN作用明显; InstanceNorm在图像像素上,对HW做归一化

模板匹配

空扰寡人 提交于 2020-03-01 15:40:35
什么是模板匹配 模板匹配和卷积原理很像,模板在原图像上从原点开始滑动,计算模板与(图像被模板覆盖的地方)的差别程度,这个差别程度的计算方法在OpenCV里面有六种方法,然后将每次的计算结果放入一个矩阵里,作为结果输出。 假设原图像是 AxB 大小,而模板是 axb 大小,则输出结果的矩阵就是 (A-a+ 1 )x(B-b+ 1 ) cv2.matchTemplate(img, template, method) 模板匹配函数 min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res) 得到矩阵最大值和最小值,以及最大值和最小值的位置 六种计算方法 TM_SQDIFF( 平方差匹配 ):这类方法利用平方差来进行匹配,最好匹配为0.匹配越差,匹配值越大. TM_CCORR( 相关匹配 ):这类方法采用模板和图像间的乘法操作,所以较大的数表示匹配程度较高,0标识最坏的匹配效果. TM_CCOEFF( 相关匹配 ):这类方法将模版对其均值的相对值与图像对其均值的相关值进行匹配,1表示完美匹配,-1表示糟糕的匹配,0表示没有任何相关性(随机序列).    其中 TM_SQDIFF_NORMED( 标准平方差匹配 ):计算归一化平方不同,计算出来的值越接近0,越相关。 TM_CCORR_NORMED( 标准相关匹配 ):计算归一化相关性

DL_Notebook 6_BN/ResNet/DenseNet

梦想的初衷 提交于 2020-03-01 04:54:33
批量归一化和残差网络 批量归一化 Batch Normalization 1. 对全连接层做批量归一化 2.对卷积层做批量归⼀化 3.预测时的批量归⼀化 从零实现 基于LeNet的应用 简洁实现 残差网络 ResNet 残差块(Residual Block) ResNet模型 DenseNet 稠密连接网络 稠密块(Dense Block) 过渡层(Transition layer) DenseNet模型 批量归一化 Batch Normalization BN是针对深层CNN的方法之一,有助于有效模型的训练。是对数据的标准化处理。 对输入的标准化(浅层模型) 处理后的任意一个特征在数据集中所有样本上的均值为0、标准差为1。 标准化处理输入数据使各个特征的分布相近(更加容易训练出有效的模型)。但对于深层模型,仅做输入的标准化是不够的,网络太深,靠近输出层还是可能发生数据的剧烈变化。 批量归一化(深度模型) 利用小批量上的均值和标准差,不断调整神经网络中间输出,从而使整个神经网络在各层的中间输出的数值更稳定。 1. 对全连接层做批量归一化 位置:全连接层中的仿射变换和激活函数之间。 关于BN位置的问题: Batch-normalized 应该放在非线性激活层的前面还是后面? 全连接: 输入 u \boldsymbol{u} u ,大小为 batch_size * 输入神经元个数

批量归一化

橙三吉。 提交于 2020-02-25 23:03:53
对于浅层模型,对输入进行标准化处理,使得各个特征的分布相近,任意一个特征在数据集中所有样本上的均值为0、标准差为1 对于深度模型: 提出批量归一化,利用小批量的均值和标准差,不断调整网络中间输出,使得网络各层的输出数值更稳定 对全连接层做BatchNormalization 对卷积层做批量归一化 位置:卷积计算之后、应用激活函数之前。 卷积层输出的维度:样本数x通道数x卷积后的高x卷积后的宽 = mxcxpxq 如果卷积计算输出多个通道,我们需要对这些通道的输出分别做批量归一化,且每个通道都拥有独立的拉伸和偏移参数。 计算:对单通道,batchsize=m,卷积计算输出=pxq 对该通道中m×p×q个元素同时做批量归一化,使用相同的均值和方差。 预测时的批量归一化 训练:以batch为单位,对每个batch计算均值和方差。 预测:用移动平均估算整个训练数据集的样本均值和方差。 因为预测的时候是没有均值和方差做参考的,只能使用移动平均法来估算 https://blog.csdn.net/zyuPp/article/details/104418772 来源: CSDN 作者: 123scales 链接: https://blog.csdn.net/qq_41268898/article/details/104505151

《动手学深度学习》Task6

北慕城南 提交于 2020-02-25 21:40:03
1.批量归一化和残差网络 什么是批量归一化?为什么要使用它? 这里先解释一下为什么对输入数据要进行标准化? 主要是为了使输入数据各个特征的分布相近。我们知道,神经网络学习的本质是学习数据集的分布,如果训练集与测试集的分布不同,那么该网络的泛化能力就会大大降低。另外,在使用批量数据训练神经网络时,如果每批数据的分布不同,网络训练的过程中一直学习适应不同分布,会大大降低网络的训练速度。 假设大家已经了解反向传播算法,神经网络在训练过程中,层与层之间的权重会不断改变和调整,前面层的权重参数的改变会影响到后面层的输入,当网络层数很多时,层之间的关联度变得很高,前面层的改变一直积累会对后面产生很大的影响,因此到某一层的输入值与上一次(此次参数更新前)的输入分布可能有很大的差距。而深度神经网络要求输入变量在训练集和测试集上的分布是相似的,这是通过训练集获得的模型能够在测试集获得好效果的一个基本保障。当输入的分布在参数更新前后有较大变化时,网络就要不断去适应新的数据分布,从而使得训练变得异常困难,这个时候只能使用一个很小的学习率和精调的初始化参数来解决。当中间层数越大,这种现象越明显。 批量归一化是指 ** 将网络层间的输入值进行归一化,而“批量”是因为归一化操作是针对训练的小批量数据进行的。** 批量归一化的好处: (1) 可以选择较大的初始学习率,加快训练速度。以前的话学习率可能需要慢慢调整

泊寓平台第四次打卡task06

左心房为你撑大大i 提交于 2020-02-25 20:26:07
批量归一化(BatchNormalization) 对输入的标准化(浅层模型) 处理后的任意一个特征在数据集中所有样本上的均值为0、标准差为1。 标准化处理输入数据使各个特征的分布相近 批量归一化(深度模型) 利用小批量上的均值和标准差,不断调整神经网络中间输出,从而使整个神经网络在各层的中间输出的数值更稳定。 1.对全连接层做批量归一化 位置:全连接层中的仿射变换和激活函数之间。 全连接: x = W u + b o u t p u t = ϕ ( x ) \boldsymbol{x} = \boldsymbol{W\boldsymbol{u} + \boldsymbol{b}} \\ output =\phi(\boldsymbol{x}) x = W u + b o u t p u t = ϕ ( x ) 批量归一化: o u t p u t = ϕ ( BN ( x ) ) output=\phi(\text{BN}(\boldsymbol{x})) o u t p u t = ϕ ( BN ( x ) ) y ( i ) = BN ( x ( i ) ) \boldsymbol{y}^{(i)} = \text{BN}(\boldsymbol{x}^{(i)}) y ( i ) = BN ( x ( i ) ) μ B ← 1 m ∑ i = 1 m x ( i ) ,

tensorflow训练中出现nan

谁说我不能喝 提交于 2020-02-23 11:12:59
问题暂记: 之后看 https://blog.csdn.net/qq_23142123/article/details/80526931 https://www.zhihu.com/question/49346370 原因分析: https://blog.csdn.net/qq_25737169/article/details/78847691 -------------------------------------------------------------- 数据预处理问题,没有归一化…… 如果输入的state(以DDPG为例)中有元素的值非常大,比如999这种的(我的数据里就有) 所以调参经验建议learning rate从0.001开始时针对归一化处理后的数据吗…?- - reward最好也控制下范围。 更深层原因还没想 ,但归一化后确实没再出现nan了 来源: https://www.cnblogs.com/peanutk/p/9947945.html

《动手学深度学习》批量归一化和残差网络;凸优化;梯度下降

北慕城南 提交于 2020-02-22 06:54:34
批量归一化和残差网络;凸优化;梯度下降 批量归一化和残差网络 对全连接层做批量归一化 对卷积层做批量归一化 残差网络(ResNet) ResNet模型 稠密连接网络(DenseNet) 过渡层 DenseNet模型 凸优化 深度学习与凸优化 优化在深度学习中的挑战 凸性 Jensen不等式 凸函数性质 梯度下降 一维 多维 批量归一化和残差网络 对全连接层做批量归一化 归一化增加在全连接层激活函数之前,全连接层输入为 u u u ,批量归一化运算符 B N BN B N ,那么使用批量归一化的全连接层的输出为: ϕ ( BN ( x ) ) \phi(\text{BN}(\boldsymbol{x})) ϕ ( BN ( x ) ) 其中批量归一化输入 x x x 由仿射变换 x = W u + b x=Wu+b x = W u + b 得到 对于一个由 m m m 个样本组成的小批量,仿射变换的输出为一个新的小批量 B = x ( 1 ) , . . . , x ( m ) B=x^{(1)},...,x^{(m)} B = x ( 1 ) , . . . , x ( m ) ,他们是批量归一化曾的输入。批量归一化层的输出为: y ( i ) = B N ( x ( i ) ) y^{(i)}=BN(x^{(i)}) y ( i ) = B N ( x ( i ) ) 批量归一化