NoRM

Extracting, transforming and selecting features

让人想犯罪 __ 提交于 2021-02-17 17:59:38
This section covers algorithms for working with features, roughly divided into these groups 本节介绍使用功能的算法,大致分为以下几组: 提取: 从数据中抽取特征。 转变: Scaling, converting, or modifying features 选择: 在多个特征中挑选比较重要的特征。 局部敏感哈希(LSH): 这类算法将特征变换的各个方面与其他算法结合起来。 Table of Contents Feature Extractors 特征提取 TF-IDF Word2Vec CountVectorizer Feature Transformers 特征变换 Tokenizer 分词器 StopWordsRemover 停用字清除 n n -gram Binarizer 二元化方法 PCA 主成成分分析 PolynomialExpansion 多项式扩展 Discrete Cosine Transform (DCT-离散余弦变换) StringIndexer 字符串-索引变换 IndexToString 索引-字符串变换 OneHotEncoder 独热编码 VectorIndexer 向量类型索引化 Interaction Normalizer 范数p-norm规范化

目标检测算法之SSD代码解析(万字长文超详细)

耗尽温柔 提交于 2021-02-13 08:50:03
前言 前面的推文已经介绍过SSD算法,我觉得原理说的还算清楚了,但是一个算法不深入到代码去理解是完全不够的。因此本篇文章是在上篇SSD算法原理解析的基础上做的代码解析,解析SSD算法原理的推文的地址如下:https://mp.weixin.qq.com/s/lXqobT45S1wz-evc7KO5DA。今天要解析的SSD源码来自于github一个非常火的Pytorch实现,已经有3K+星,地址为:https://github.com/amdegroot/ssd.pytorch/ 网络结构 为了比较好的对应SSD的结构来看代码,我们首先放出SSD的网络结构,如下图所示: 可以看到原始的SSD网络是以VGG-16作Backbone(骨干网络)的。为了更加清晰看到相比于VGG16,SSD的网络使用了哪些变化,知乎上的一个帖子做了一个非常清晰的图,这里借用一下,原图地址为:https://zhuanlan.zhihu.com/p/79854543 。带有特征图维度信息的更清晰的骨干网络和VGG16的对比图如下: 源码解析 OK,现在我们就要开始从源码剖析SSD了 。主要弄清楚三个方面,网络结构的搭建,Anchor还有损失函数,就算是理解这个源码了。 网络搭建 从上面的图中我们可以清晰的看到在以VGG16做骨干网络时,在conv5后丢弃了CGG16中的全连接层改为了 和 的卷积层。其中

目标检测算法之SSD代码解析(万字长文超详细)

≡放荡痞女 提交于 2021-02-13 01:43:04
前言 前面的推文已经介绍过SSD算法,我觉得原理说的还算清楚了,但是一个算法不深入到代码去理解是完全不够的。因此本篇文章是在上篇SSD算法原理解析的基础上做的代码解析,解析SSD算法原理的推文的地址如下:https://mp.weixin.qq.com/s/lXqobT45S1wz-evc7KO5DA。今天要解析的SSD源码来自于github一个非常火的Pytorch实现,已经有3K+星,地址为:https://github.com/amdegroot/ssd.pytorch/ 网络结构 为了比较好的对应SSD的结构来看代码,我们首先放出SSD的网络结构,如下图所示: 可以看到原始的SSD网络是以VGG-16作Backbone(骨干网络)的。为了更加清晰看到相比于VGG16,SSD的网络使用了哪些变化,知乎上的一个帖子做了一个非常清晰的图,这里借用一下,原图地址为:https://zhuanlan.zhihu.com/p/79854543 。带有特征图维度信息的更清晰的骨干网络和VGG16的对比图如下: 源码解析 OK,现在我们就要开始从源码剖析SSD了 。主要弄清楚三个方面,网络结构的搭建,Anchor还有损失函数,就算是理解这个源码了。 网络搭建 从上面的图中我们可以清晰的看到在以VGG16做骨干网络时,在conv5后丢弃了CGG16中的全连接层改为了 和 的卷积层。其中

Python: sklearn库——数据预处理

假如想象 提交于 2021-02-12 22:42:36
Python: sklearn库 —— 数据预处理 数据集转换之预处理数据: 将输入的数据转化成机器学习算法可以使用的数据。包含特征提取和标准化。 原因:数据集的标准化(服从均值为0方差为1的标准正态分布(高斯分布))是大多数机器学习算法的常见要求。 如果原始数据不服从高斯分布,在预测时表现可能不好。在实践中,我们经常进行标准化(z-score 特征减去均值/标准差)。 一、标准化(Z-Score),或者去除均值和方差缩放 公式为:(X-mean)/std 计算时对每个属性/每列分别进行。 将数据按期属性(按列进行)减去其均值,并处以其方差。得到的结果是,对于每个属性/每列来说所有数据都聚集在0附近,方差为1。 实现时,有两种不同的方式: 使用sklearn.preprocessing.scale()函数,可以直接将给定数据进行标准化。 >>> from sklearn import preprocessing >>> import numpy as np >>> X = np.array([[ 1., -1., 2 .], ... [ 2 ., 0., 0.], ... [ 0., 1., -1 .]]) >>> X_scaled = preprocessing.scale(X) >>> X_scaled array([[ 0. ..., -1.22..., 1.33 ...],

《Attack ML Models

依然范特西╮ 提交于 2021-02-12 04:28:26
Attack ML Models - 李宏毅 https://www.bilibili.com/video/av47022853 Training的Loss:固定x,修改θ,使y0接近ytrue. Non-targeted Attack的Loss:固定θ,修改x,使y‘远离ytrue. Targeted Attack的Loss:固定θ,修改x,使y‘远离ytrue且接近yfalse. constraint:x‘和原图像x0的相似度,必须小于阈值ε.有多种计算方法,如L2-norm,L-infinity,因为取决于人类感知,一般采用L-infinity. 对抗攻击即生成对抗样本x’,它要使得损失函数L(x‘)尽可能小,同时确保相似度d(x0,x’)小于ε. 采用梯度下降法进行,x0作为初始值进行迭代.如果相似度超过ε,则对xt进行修正. 具体修正策略为,找到小于ε且与当前xt最接近的x. 图片特征一般是很高维的,在某些维度上如图1,tiger cat的置信度范围很广且附近都是cat,在另一些维度上如图2,tiger cat的置信度很窄且附近时不相干的事物. 不同的对抗攻击方法,区别一般在于采用不同的距离限制方式与不同的优化策略. FGSM是一种常见的对抗攻击方法,它的原理是计算出分类函数loss的梯度,然后用sign函数将其指向四个角的方向之一,再乘上ε使其落在角上

matlab矩阵的操作

南楼画角 提交于 2021-02-10 20:52:56
特殊矩阵 通用型的特殊矩阵 zeros函数:产生全0矩阵,即零矩阵 ones函数:产生全1矩阵,即幺矩阵 eye函数: 产生对角线为1的矩阵。当矩阵是方阵时,得到一个单位矩阵。 rand函数:产生(0,1)区间均匀分布的随机矩阵 randn函数:产生均值为0,方差为1的标准正态分布随机矩阵。 以上函数三种调用格式 例: 产生m x m 零矩阵 :zeros(m) 产生m x n 零矩阵 :zeros(m,n) 产生与矩阵A同型的零矩阵 :zeros(sizeof(A)) 面向专门学科的特殊矩阵 1、 魔方矩阵:n阶魔方阵由1..n 2 共n 2 个整数组成,其每行每列及主、副对角线元素 之和都相等。当n>=2时,有多个不同的n阶魔方阵。 magic(n):产生一个特定(不是所有的)n阶的魔方阵 2、 范德蒙(Vandermonde的)矩阵(常用与通信编码纠错): vander(v)函数:生成以向量V为基础的范德蒙矩阵 3、 希尔伯特(Hilbert)矩阵:H( i , j )= 1/ (i+j-) Hilb(n)函数:生成n阶希尔伯特矩阵 4、 伴随矩阵(??): Compan(p)函数:求矩阵P的伴随矩阵 5、 帕斯卡矩阵:P( i , j )=p(i , j-1) + p(i-1,j) 且 p(i , 1)= p(1,j)=1 Pascal(n)函数:生成帕斯卡矩阵 矩阵变换

【ICLR2020】Transformer Complex-order:一种新的位置编码方式

旧巷老猫 提交于 2021-02-08 16:34:26
补一下昨天没发完的一篇 文中公式若显示不全可左右滑动~ 比较有意思的论文 [1] ,关注的点也是在序列建模的位置信息编码。先前的方法通过引入额外的位置编码,在 embedding 层将词向量和位置向量通过加性编码融合, 但是该种方式每个位置向量是独立训练得到的,并不能建模序列的 order relationship (例如邻接或优先关系),作者将此称为 the position independece problem 。 针对该问题论文提出了一种新的位置编码方式,将独立的词向量替换成自变量为位置的函数,于是单词表示会随着位置的变化而平滑地移动,可以更好地建模单词的绝对位置和顺序信息。 其中, 表示此表中序号为 的单词在位置 时的单词向量, 表示函数集合, 表示单词到函数的映射,展开即为, 为了达到上述要求,函数应该满足以下两个条件: Property 1. Position-free offset transformation 对于任意位置 pos 和 ,存在变换 Transform Transform 满足, 特别地,论文考虑 Transform 为线性变换 Property 2. Boundedness 函数应该是有界的, 接下去,论文证明了满足上述两个条件的解函数形式为, ❝ 贴一下论文给的证明:(看不看无所谓,能用就行 haha) 假设函数 满足上述两个条件,则对于任意位置

吴恩达深度学习学习笔记——C2W3——超参数调试、Batch正则化和程序框架-2

戏子无情 提交于 2021-02-04 08:32:36
1.6 Batch Norm 为什么奏效? 样本变动(covariate shift)会使得模型的确定变得困难 在不同的mini-batch中,激活函数a可能会变化较大,batch norm可使其更加“归一” Batch Norm具有轻微的“正则化”效应,但这不是其目的,其目的在于加快训练速度 1.7 测试时如何使用Batch Norm? 测试时,可使用指数加权平均法来计算均值和方差 1.8 Softmax 回归 Softmax可用于多分类,是二分类logistic回归的一般形式 Softmax层的计算 Softmax示例 1.9 训练一个 Softmax 分类器 理解Softmax回归 Softmax回归的损失函数 Softmax的梯度下降 1.10 深度学习框架 1.11 TensorFlow 问题引入 Tensorflow代码示例 来源: oschina 链接: https://my.oschina.net/u/4411837/blog/4944384

深度学习框架PyTorch的技巧总结

邮差的信 提交于 2021-02-02 10:44:02
1.在训练模型时指定GPU的编号 设置当前使用的GPU设备仅为0号设备,设备名称为"/gpu:0", os.environ["CUDA_VISIBLE_DEVICES"]="0" ; 设置当前使用的GPU设备为0,1两个设备,名称依次为"/gpu:0","/gpu:1", os.environ["CUDA_VISIBLE_DEVICES"]="0,1" ;根据顺序优先表示使用0号设备,然后使用1号设备; 同样,也可以在训练脚本外面指定, CUDA_VISIBLE_DEVICES=0,1 python train.py ,注意,如果此时使用的是8卡中的6和7, CUDA_VISIBLE_DEVICES=6,7 python train.py ,但是在模型并行化的时候,仍然指定0和1, model=nn.DataParallel(mode, devices=[0,1] ; 在这里,需要注意的是,指定GPU的命令需要放在和网络模型操作的最前面; 2.查看模型每层的输如输出详情 1.需要安装torchsummary或者torchsummaryX(pip install torchsummary); 2.使用示例如下: from torchvision import models vgg16 = models . vgg16 ( ) vgg16 = vgg16 . cuda ( ) # 1

数据预处理 --Sklearn preprocessing的理解

天大地大妈咪最大 提交于 2021-02-02 05:59:09
一、标准化 API函数: scaler()或者StandardScaler()   数据集标准化对有些机器学习算法是很有必要的手段,只所以进行标准化,是因为两个原因:其一,对于同一特征中,最大最小值之差过大,将数据缩放在合适的范围,比如手机包月流量使用情况,有些数值是500M,有些是1G;其二、有些机器学习算法中目标函数的基础为假设特征均值为0,方差在同一介数的情况,sklearn官网说这类算法比如:SVM的RBF内核或线性模型的l1和l2正则化,如果某些特征的方差比其它的特征方差大几个数量级别,A方差是1,B特征方差是1000,那么会导致B特征对此算法占主导地位,导致学习器不是你所期望的结果。 标准化公式:(X - X_mean)/X_std; 计算时对每个属性/每列分别进行。 API函数一:sklearn.preprocessing.scale(X, axis= 0, with_mean= True,with_std= True,copy= True) 变量注解:   X:{array-like, sparse matrix}   axis:默认值为0,为0表示分别标准化每个特征(按列),为1表示对每个样本进行标准化(按行)   with_mean和with_std:分别表示数据均值规范为0,方差规范为1 用例: from sklearn import