归一化

unity中shader常用方法

自古美人都是妖i 提交于 2020-01-22 19:07:16
今天给大家列出来shader中常用的一些函数,函数后面有释义,大家可以打印出来,或者在写shader的时候来这篇文章查阅,看看你需要用到哪些。 Cg提供了一系列内建的标准函数。这些函数用于执行数学上的通用计算或通用算法(纹理映射等), 有些函数直接和 GPU 指令相对应,所以执行效率非常高。 这些函数来源于文档,我为大家筛选出了常用的,去掉了基本用不到的函数。 数学函数: abs(x) 返回输入参数的绝对值 acos(x) 反余切函数,输入参数范围为[-1,1],返回[0,π]区间的角度值 all(x) 如果输入参数均不为0,则返回 ture;否则返回 flase。&&运算 any(x) 输入参数只要有其中一个不为0,则返回 true。||运算 asin(x) 反正弦函数,输入参数取值区间为[−1,1],返回角度值范围为[−π/2 ,π/2 ] atan(x) 反正切函数,返回角度值范围为⎡−π/2 ,π/2⎤ atan2(y,x) 计算y/x 的反正切值。实际上和atan(x)函数功能完全一样,至少输入参数不同。atan(x) = atan2(x, float(1)) ceil(x) 对输入参数向上取整。例如:ceil(float(1.3)),其返回值为 2.0 clamp(x,a,b) 如果x 值小于 a,则返回a;如果 x 值大于 b,返回b;否则,返回 x cos(x)

神经网络为什么要归一化

柔情痞子 提交于 2020-01-19 06:56:10
用神经网络的小伙伴都知道,数据需要做归一化,但是为什么要做归一化,这个问题一直模梭两可,网上也没有较全的回答,小编花费了一段时间,作了一些研究,给大家仔细分析分析,为什么要做归一化: 1.数值问题。 无容置疑,归一化的确可以避免一些不必要的数值问题。输入变量的数量级未致于会引起数值问题吧,但其实要引起也并不是那么困难。因为tansig的非线性区间大约在[-1.7,1.7]。意味着要使神经元有效,tansig( w1*x1 + w2*x2 +b) 里的 w1*x1 +w2*x2 +b 数量级应该在 1 (1.7所在的数量级)左右。这时输入较大,就意味着权值必须较小,一个较大,一个较小,两者相乘,就引起数值问题了。 假如你的输入是421,你也许认为,这并不是一个太大的数,但因为有效权值大概会在1/421左右,例如0.00243,那么,在matlab里输入 421*0.00243 == 0.421*2.43 可以看到两者不相等了,说明已经引起数值问题了。 2.求解需要 我们建立了神经网络模型后,只要找到的解足够好,我们的网络就能够正确的预测了。在训练前我们将数据归一化,说明数据归是为了更方便的求解。 那么,究竟给求解带来了什么方便呢? 这个问题不能一概而论,不同的算法,在归一化中得到的好处各不相同。假若有一个很牛B的求解算法,那完全用不着归一化,不过目前大部算法,都比较需要归一化

机器学习之路--常用面试题目

烂漫一生 提交于 2020-01-19 00:46:28
该内容大部分来自<<百面机器学习算法工程师>> 1.特征工程 1.1为什么需要对数值类型进行归一化? 使各个指标处于同一数值量级,消除数据之间的量纲影响。 比如分析一个人的身高和体重对健康的影响。 1.2补充知识点 结构化数据 :关系数据库的一张表,每列都有清晰的定义,包含 了数值型和类别型 非结构化数据 : 文本,图像,音频,无法使用简单的数值表示,也没有清晰的类别定义, 并且每条数据的大小各不相同 1.3方法 线性归一化 (Min-Max Scaling) 它对原始数据进行线性变换,使结果映射到 [0,1]的范围,实现对原始数据 的等比缩放。 零均值归一化 (Z-Score Normalization) 它使原始数据映射到均值为 0,标准差为1的正太分布 1.4 注意 通过梯度下降算法通常需要归一化,包括线性回归,逻辑回归, SVM,神经网络等模型 但是决策树模型不需要归一化 1.2在对数据进行预处理时,应该怎样处理类别型特征? 序号编码 (Ordinal Encoding) 通常用于处理类别间具有大小关系的数据。 比如成绩可以分为低中高三个档那么高表示为 3,中表示2,低表示为1 独热编码 (One-hot Encoding) 处理类别间不具有大小关系的特征。 例如血型 (A型血,B型血,AB型血,O型血) A型血(1,0,0,0),B型血(0,1,0,0),AB型血(0,0

Batch Normalization(BN层)详解

£可爱£侵袭症+ 提交于 2020-01-18 06:39:14
1. 背景 本篇博文主要讲解2015年深度学习领域,非常值得学习的一篇文献:《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》,这个算法目前已经被大量的应用,最新的文献算法很多都会引用这个算法,进行网络训练,可见其强大之处非同一般啊。 近年来深度学习捷报连连、声名鹊起,随机梯度下架成了训练深度网络的主流方法。尽管随机梯度下降法对于训练深度网络简单高效,但是它有个毛病,就是需要我们人为的去选择参数,比如学习率、参数初始化、权重衰减系数、Drop out比例等。 这些参数的选择对训练结果至关重要,以至于我们很多时间都浪费在这些的调参上。那么学完这篇文献之后,你可以不需要那么刻意的慢慢调整参数 。BN算法(Batch Normalization)其强大之处如下: 实际上深度网络中每一层的学习率是不一样的,一般为了网络能够正确的收敛、损失函数的值能够有效的下降,常常将学习率设为所有层中学习率最小的那个值。但是 Batch Normalization 对每层数据规范化后,这个最低学习率就会被提高,所以网络训练时可以设置较高的初始学习率,加快收敛。 你再也不用去理会过拟合中drop out、L2正则项参数的选择问题,采用BN算法后

图像特征提取之HOG特征

为君一笑 提交于 2020-01-17 08:59:26
目标检测的图像特征提取之(一)HOG特征 zouxy09@qq.com http://blog.csdn.net/zouxy09 1、HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。它通过计算和统计图像局部区域的梯度方向直方图来构成特征。Hog特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功。需要提醒的是,HOG+SVM进行行人检测的方法是法国研究人员Dalal在2005的CVPR上提出的,而如今虽然有很多行人检测算法不断提出,但基本都是以HOG+SVM的思路为主。 (1)主要思想: 在一副图像中,局部目标的表象和形状(appearance and shape)能够被梯度或边缘的方向密度分布很好地描述。(本质:梯度的统计信息,而梯度主要存在于边缘的地方)。 (2)具体的实现方法是: 首先将图像分成小的连通区域,我们把它叫细胞单元。然后采集细胞单元中各像素点的梯度的或边缘的方向直方图。最后把这些直方图组合起来就可以构成特征描述器。 (3)提高性能: 把这些局部直方图在图像的更大的范围内(我们把它叫区间或block)进行对比度归一化(contrast-normalized),所采用的方法是:先计算各直方图在这个区间(block)中的密度

3.数据预处理 Preprocessing & Impute

对着背影说爱祢 提交于 2020-01-16 09:06:20
这章本来只想看看就好,不敲代码的,因为不难,但代码敲到第四章发现还是用到了挺多第三章代码的,所以稳妥一点,还是不要眼高手低,把第三章代码补回来敲一敲吧。 ————————————————————————分割线—————————————————————————— 数据无量纲化 将不同规格的数据转换到同一规格,或不同分布的数据转换到某个特定分布的需求,这种需求统称为将数据“无量纲化”。 譬如梯度和矩阵为核心的算法中,如逻辑回归,支持向量机,神经 网络,无量纲化可以加快求解速度;而在距离类模型; 譬如K近邻,K-Means聚类中,无量纲化可以帮我们提升模 型精度,避免某一个取值范围特别大的特征对距离计算造成影响。 数据的无量纲化可以是线性的,也可以是非线性的。 线性的无量纲化包括 中心化 (Zero-centered或者Mean- subtraction)处理和 缩放 处理(Scale)。 中心化的本质是让所有记录减去一个固定值,即让数据样本数据平移到某个位置。 缩放的本质是通过除以一个固定值,将数据固定在某个范围之中。(取对数也算是一种缩放处理。) 实现归一化 当数据(x)按照最小值中心化后,再按极差(最大值 - 最小值)缩放,数据移动了最小值个单位,并且会被收敛到 [0,1]之间。 而这个过程,就叫做数据归一化(Normalization,又称Min-Max Scaling)

机器学习中进行学习训练的一般步骤

自闭症网瘾萝莉.ら 提交于 2020-01-16 02:13:09
一般步骤 一、得到数据集并做预处理 1.分割数据集(train_test_split) 可以用train_test_split来处理得到的数据集,代码基本形式如下: from sklearn . model_selection import train_test_split X_train , X_test , Y_train , Y_test = train_test_split ( X_original , Y_original , test_size = 0.2 ) 2.数据集归一化 使用StandScaler进行归一化,归一化目的是为了让数据之间的差别不那么大。代码基本形式如下: from sklearn . preprocessing import StandardScaler scaler = StandardScaler ( ) scaler . fit_transform ( X_train ) scaler . transform ( X_test ) 二、选择机器学习中的算法,确定模型 首先,确定目的。目的是为了分类,还是为了回归。 之后,确定是多类别输出、多标签输出还是单一输出,如何确定可查看我另一篇文章: 点击此处 然后,根据分类和回归来选择估计器estimator、得分指标(如MSE、ACCURACY)等。 算法很多,不同算法对应不同estimator

深入FM和FFM原理与实践

会有一股神秘感。 提交于 2020-01-16 00:27:04
FM和FFM模型是最近几年提出的模型,凭借其在数据量比较大并且特征稀疏的情况下,仍然能够得到优秀的性能和效果的特性,屡次在各大公司举办的CTR预估比赛中获得不错的战绩。美团点评技术团队在搭建DSP的过程中,探索并使用了FM和FFM模型进行CTR和CVR预估,并且取得了不错的效果。本文旨在把我们对FM和FFM原理的探索和应用的经验介绍给有兴趣的读者。 本文转载自:https://tech.meituan.com/deep_understanding_of_ffm_principles_and_practices.html(美团技术点评团队) 前言 在 计算广告 领域,点击率CTR(click-through rate)和转化率CVR(conversion rate)是衡量广告流量的两个关键指标。准确的估计CTR、CVR对于提高流量的价值,增加广告收入有重要的指导作用。预估CTR/CVR,业界常用的方法有人工特征工程 + LR(Logistic Regression)、GBDT(Gradient Boosting Decision Tree) + LR [1] [2] [3] 、FM(Factorization Machine) [2] [7] 和FFM(Field-aware Factorization Machine) [9] 模型。在这些模型中,FM和FFM近年来表现突出

深度学习基础学习-forward&backward(1-数据集的处理)(内附python源码)

雨燕双飞 提交于 2020-01-15 01:40:21
深度学习基础学习-forward&backward(1-数据集的处理)(内附python源码) 本篇博客从对数据集的处理开始到如何优化参数更新,全面覆盖BP神经网络的基础知识,以如何搭建一个BP的步骤为基本骨架进行逐个学习,主要内容包括以下几个方面: 1. 数据集的分批处理及归一化处理; 2. 参数的初始化; 3. 正则化; 4. 参数更行中的优化; 5. 学习率的优化; 6. 整个BP网络的搭建。 分步详解: 1 数据集的分批处理及归一化处理 (1)数据集的分批处理 (2)数据集的归一化处理 本篇博客从对数据集的处理开始到如何优化参数更新,全面覆盖BP神经网络的基础知识,以如何搭建一个BP的步骤为基本骨架进行逐个学习,主要内容包括以下几个方面: 1. 数据集的分批处理及归一化处理; 2. 参数的初始化; 3. 正则化; 4. 参数更行中的优化; 5. 学习率的优化; 6. 整个BP网络的搭建。 分步详解: 1 数据集的分批处理及归一化处理 (1)数据集的分批处理 在训练神经网络的过程中,每次迭代都需要遍历整个数据集,然后才能进行下一次迭代。当数据太大的时候,处理的速度比较慢,这时可以将整个数据集分成一个个的子集来进行处理以提高算法处理速度。这些分割出来的子集被成为 Mini-batch 。 整个数据集一次处理和采用Mini-batch处理的不同之处在于:整个数据集一次处理时