
机器学习理论
文章平均质量分 82
机器学习理论
Wanderer001
AR/VR软件与硬件技术:图像增强、图像分类、语义分割、目标检测、目标跟踪、风格迁移、强化学习、三维重建、SLAM
展开
-
使用ONNX部署深度学习和传统机器学习模型
目录ONNX简介ONNX标准介绍ONNX与PMMLDaaS简介使用ONNX部署传统机器学习模型使用ONNX部署深度神经网络模型总结参考ONNX简介开放神经网络交换ONNX(Open Neural Network Exchange)是一套表示深度神经网络模型的开放格式,由微软和Facebook于2017推出,然后迅速得到了各大厂商和框架的支持。通过短短几年的发...转载 2022-05-20 12:59:57 · 2871 阅读 · 1 评论 -
DOMAIN ADAPTATION FOR REINFORCEMENT LEARNING ONTHE ATARI
权重初始化对于训练神经网络至关重要,好的初始化权重可以有效的避免梯度消失等问题的发生。在pytorch的使用过程中有几种权重初始化的方法供大家参考。注意:第一种方法不推荐。尽量使用后两种方法。# not recommenddef weights_init(m):classname = m.__class__.__name__if classname.find('Conv') != -1:m.weight.data.normal_(0.0, 0.02)elif classnam原创 2022-05-10 11:17:35 · 2696 阅读 · 0 评论 -
Siamese network
IEEE GRSS的名单较全:http://www.grss-ieee.org/open-source-software-related-to-geoscience-and-remote-sensing/还有:http://gisgeography.com/open-source-remote-sensing-software-packages/A list of open sou...原创 2022-02-23 10:52:02 · 1474 阅读 · 0 评论 -
对比学习(Contrastive Learning)相关进展梳理
代码编写风格的重要性:随着你编写的程序越来越长,有必要了解一些代码格式设置约定。请花时间让你的代码尽可能易于阅读;让代码易于阅读有助于你掌握程序是做什么的,也可以帮助他人理解你编写的代码。为确保所有人编写的代码结构都大致一致。Python程序员都遵循一些格式设置约定。学会编写整洁的Python后,就能明白他人编写Python代码的整体结构------只要他们和你遵循相同的指南。设置格式指南...原创 2022-02-23 10:53:01 · 1827 阅读 · 0 评论 -
Consistency Regularization
pkl文件是python里面保存文件的一种格式,如果直接打开会显示一堆序列化的东西。csv文件:逗号分隔符文件,可以使用excel打开。tsv文件:制表符Tab分隔文件,可以使用excel打开。1.读取csvdf= pd.read_csv('test.csv')df是dataframe类型的。2.写入csv#任意的多组列表a = [1,2,3]b = [4,5,6]...原创 2022-02-21 14:06:41 · 1593 阅读 · 0 评论 -
Unsupervised Detection of Adversarial Exampleswith Model Explanations
numel()函数:返回数组中元素的个数使用例子:params = sum(p.numel() for p in list(net.parameters())) / 1e6 # numel()print('#Params: %.1fM' % (params))net.parameters():是Pytorch用法,用来返回net网络中的参数params:用来返回net网络中的参...原创 2022-02-22 11:00:28 · 766 阅读 · 0 评论 -
机器学习知识体系
Latex——向下取整,向下取整向下取整:$\lfloor x \rfloor$例如: ⌊ x ⌋向上取整:$\lceil x \rceil$例如: ⌈ x ⌉承接Matlab、Python和C++的编程,机器学习、计算机视觉的理论实现及辅导,本科和硕士的均可,咸鱼交易,专业回答请走知乎,详谈请联系QQ号757160542,非诚勿扰。...原创 2022-02-24 09:09:36 · 520 阅读 · 0 评论 -
Container: Context Aggregation Network
摘要卷积神经网络(CNNs)在计算机视觉中无处不在,具有无数有效和高效的变化。最近,变形金刚——最初是在自然语言处理中引入的——已经越来越多地应用于计算机视觉。早期的用户继续使用CNN的骨干,最新的网络是端到端无CNN的Transformer解决方案。最近一个令人惊讶的发现表明,一个简单的基于MLP的解决方案,没有任何传统的卷积或Transformer组件,可以产生有效的视觉表示。虽然cnn、transformer和MLP-Mixers可以被视为完全不同的架构,但我们提供了一个统一的视图,表明它们实际上原创 2022-02-25 17:22:49 · 3083 阅读 · 1 评论 -
多分类Focal Loss
class FocalLoss(nn.Module): def __init__(self, gamma = 2, alpha = 1, size_average = True): super(FocalLoss, self).__init__() self.gamma = gamma self.alpha = alpha self.size_average = size_average self.elipson = .原创 2022-03-05 15:08:28 · 1743 阅读 · 1 评论 -
Pyorch基于二分类交叉熵实现Focal Loss
class FocalLoss(nn.Module): def __init__(self, alpha=1, gamma=2, logits=False, reduce=True): super(FocalLoss, self).__init__() self.alpha = alpha self.gamma = gamma self.logits = logits self.reduce = reduce .原创 2022-03-04 12:26:00 · 573 阅读 · 0 评论 -
为什么DL,RL里面算法的最初版本都叫vanilla?
Vanilla这个单词在深度学习里挺常见的,例如vanilla convolution,vanilla neural network。Vanilla原义香草,香草味就是老美的原味,所以vanilla这个单词引申含义就有“普通的、原始的”的意思。原创 2022-03-15 08:22:43 · 2006 阅读 · 2 评论 -
VC-Dimension and Rademacher Complexity-based bounds
VC-Dimension和Rademacher complexity是机器学习中常提到的度量复杂的的概念,一直远观而没有亵玩,今天对这个概念进行学习记录。VC-Dimension全称为Vapnik-Chervonenkis dimension,从wiki上搞来一段定义In Vapnik–Chervonenkis theory, the Vapnik–Chervonenkis (VC) dimension is a measure of the capacity (complexity, exp原创 2022-03-15 08:23:05 · 606 阅读 · 0 评论 -
Siamese Network (应用篇3) :孪生网络用于图像块匹配 ACCV2016
参看论文:Melekhov I, Kannala J, Rahtu E, et al. Image patch matching using convolutional descriptors with Euclidean distance[C]. asian conference on computer vision, 2016: 638-653.会议水平:ACCV 2016,供稿单位:芬兰阿尔托大学计算机科学系、芬兰奥卢大学机器视觉研究中心Finding correspondences be原创 2022-03-17 09:11:43 · 1440 阅读 · 0 评论 -
FLOPS的含义及其计算方式
1. 深度学习框架FLOPs的概念Floating point operations即:浮点运算数量Paper里比较流行的单位是GFLOPs1 GFLOPs = 10^9 FLOPs即:10亿次浮点运算2. 深度学习框架FLOPs的组成1. 卷积运算Conv用以下动图中直观的解释:Image大小为 5x5卷积核大小为 3x3那么一次3x3的卷积(求右图矩阵一个元素的值)所需运算量:(3x3)个乘法+(3x3-1)个加法 = 17要得到右图convolved原创 2022-03-14 10:49:40 · 5662 阅读 · 1 评论 -
PPO(Proximal Policy Optimization)近端策略优化算法
强化学习可以按照方法学习策略来划分成基于值和基于策略两种。而在深度强化学习领域将深度学习与基于值的Q-Learning算法相结合产生了DQN算法,通过经验回放池与目标网络成功的将深度学习算法引入了强化学习算法。其中最具代表性分别是Q-Learning与Policy Gradient算法,将Q-Learning算法与深度学习相结合产生了Deep Q Network,而后又出现了将两种方式的优势结合在一起的更为优秀Actor Critic,DPG, DDPG,A3C,TRPO,PPO等算法。而本文所采用的是目前原创 2022-03-14 10:49:47 · 3533 阅读 · 1 评论 -
过拟合问题
1、过拟合问题 欠拟合:根本原因是特征维度过少,模型过于简单,导致拟合的函数无法满足训练集,误差较大; 解决方法:增加特征维度,增加训练数据; 过拟合:根本原因是特征维度过多,模型假设过于复杂,参数过多,训练数据过少,噪声过多,导致拟合的函数完美的预测训练集,但对新数据的测试集预测结果差。过度的拟合了训练数据,而没有考虑到泛化能力。 解决方法:(1)减少特征维度;(2)正则化,降低参数值。 减少过拟合总结:过拟合主要是有两个原因造成的:数据太少+模型太复杂 ...原创 2022-03-24 13:08:55 · 3922 阅读 · 0 评论 -
训练数据量中关于batch_size,iteration和epoch的概念
目录batch_size iteration epoch 实例batch_size机器学习使用训练数据进行学习,针对训练数据计算损失函数的值,找出使该值尽可能小的参数。但当训练数据量非常大,这种情况下以全部数据为对象计算损失函数是不现实的。因此,我们从全部数据中选出一部分,作为全部数据的“近似”。神经网络的学习也是从训练数据中选出一批数据(称为 mini-batch,小批量),然后对每个mini-batch进行学习。比如,从60000个训练数据中随机选取100个数据,用这100个数据进.原创 2022-04-19 18:11:40 · 2361 阅读 · 0 评论 -
自训练和半监督学习介绍
当涉及到机器学习分类任务时,用于训练算法的数据越多越好。在监督学习中,这些数据必须根据目标类进行标记,否则,这些算法将无法学习独立变量和目标变量之间的关系。但是,在构建用于分类的大型标记数据集时,会出现两个问题:标记数据可能很耗时。假设我们有1000000张狗图像,我们想将它们输入到分类算法中,目的是预测每个图像是否包含波士顿狗。如果我们想将所有这些图像用于监督分类任务,我们需要一个人查看每个图像并确定是否存在波士顿狗。 标记数据可能很昂贵。原因一:要想让人费尽心思去搜100万张狗狗照片,我们可能得掏原创 2022-04-01 10:39:21 · 1632 阅读 · 0 评论 -
生成对抗网络(GAN)
Generative Adversarial NetworkGAN的概述GAN的思想就是:这是一个两人的零和博弈游戏,博弈双方的利益之和是一个常数,比如两个人掰手腕,假设总的空间是一定的,你的力气大一点,那你就得到的空间多一点,相应的我的空间就少一点,相反我力气大我就得到的多一点,但有一点是确定的就是,我两的总空间是一定的,这就是二人博弈,但是呢总利益是一定的。用一个形象的例子解释就是:GAN就好比是一个大的网络,在这个网络中有两个小的网络,一个是生成网络,可以当做是制作假钞的人, 而另一个原创 2022-04-05 10:39:35 · 4333 阅读 · 2 评论 -
利用tensorflow训练简单的生成对抗网络GAN
对抗网络是14年Goodfellow Ian在论文Generative Adversarial Nets中提出来的。 原理方面,对抗网络可以简单归纳为一个生成器(generator)和一个判断器(discriminator)之间博弈的过程。整个网络训练的过程中,两个模块的分工判断网络,直观来看就是一个简单的神经网络结构,输入就是一副图像,输出就是一个概率值,用于判断真假使用(概率值大于0.5那就是真,小于0.5那就是假) 生成网络,同样也可以看成是一个神经网络模型,输入是一组随机数Z,输出是一个图原创 2022-04-08 12:14:12 · 1159 阅读 · 0 评论 -
利用tensorflow训练简单的生成对抗网络GAN
对抗网络是14年Goodfellow Ian在论文Generative Adversarial Nets中提出来的。 原理方面,对抗网络可以简单归纳为一个生成器(generator)和一个判断器(discriminator)之间博弈的过程。整个网络训练的过程中,两个模块的分工判断网络,直观来看就是一个简单的神经网络结构,输入就是一副图像,输出就是一个概率值,用于判断真假使用(概率值大于0.5那就是真,小于0.5那就是假)。 生成网络,同样也可以看成是一个神经网络模型,输入是一组随机数Z,输出是一个原创 2022-04-09 13:08:19 · 1202 阅读 · 0 评论 -
Early Stopping
一、前述调优对于模型训练速度,准确率方面至关重要,所以本文对神经网络中的调优做一个总结。二、神经网络超参数调优1、适当调整隐藏层数 对于许多问题,你可以开始只用一个隐藏层,就可以获得不错的结果,比如对于复杂的问题我们可以在隐藏层上使用足够多的神经元就行了, 很长一段时间人们满足了就没有去探索深度神经网络,但是深度神经网络有更高的参数效率,神经元个数可以指数倍减少,并且训练起来也更快!(因为每个隐藏层上面神经元个数减少了可以完成相同的功能,则连接的参数就少了)就好像直接画一个森林会很慢,但原创 2022-04-14 09:46:12 · 940 阅读 · 0 评论 -
深度学习的调参经验
目录(1)、获取数据(2)、预处理(3)、验证集(4)、批处理(5)、权值初始化(6)、学习率(7)、数值梯度检查(8)、Dropout(9)、综合(Ensembling)(10)、自动调参(11)、RNN和LSTM的调参(1)、获取数据确保要有高质量的输入/输出数据集,这个数据集要足够大、具有代表性以及拥有相对清楚的标签。缺乏数据集是很难成功的。(2)、预处理将数据进行集中是非常重要的,也就是要使数据均值为0,从而使每个维度的每次变动为1。有时,原创 2022-04-26 08:43:37 · 1894 阅读 · 0 评论 -
batch size设置
深度学习中经常看到epoch、 iteration和batchsize,下面按自己的理解说说这三个的区别:(1)batchsize:批大小。在深度学习中,一般采用SGD训练,即每次训练在训练集中取batchsize个样本训练;(2)iteration:1个iteration等于使用batchsize个样本训练一次;(3)epoch:1个epoch等于使用训练集中的全部样本训练一次;举个例子,训练集有1000个样本,batchsize=10,那么:训练完整个样本集需要:100次iteratio原创 2022-04-24 09:14:41 · 4309 阅读 · 0 评论 -
warmup 预热学习率
目录(一)、什么是Warmup?(二)、为什么使用Warmup?(三)、Warmup的改进(四)总结学习率是神经网络训练中最重要的超参数之一,针对学习率的优化方式很多,Warmup是其中的一种。(一)、什么是Warmup?Warmup是在ResNet论文中提到的一种学习率预热的方法,它在训练开始的时候先选择使用一个较小的学习率,训练了一些epoches或者steps(比如4个epoches,10000steps),再修改为预先设置的学习率来进行训练。(二)、为什么使用W..原创 2022-04-23 08:18:15 · 1266 阅读 · 1 评论 -
Huber Loss
Huber Loss 是一个用于回归问题的带参损失函数, 优点是能增强平方误差损失函数(MSE, mean square error)对离群点的鲁棒性。当预测偏差小于 δ 时,它采用平方误差,当预测偏差大于 δ 时,采用的线性误差。相比于最小二乘的线性回归,HuberLoss降低了对离群点的惩罚程度,所以 HuberLoss 是一种常用的鲁棒的回归损失函数。Huber Loss 定义如下参数 a 通常表示 residuals,写作 y−f(x),当 a = y−f(x) 时,Hu.原创 2022-04-19 18:13:57 · 5670 阅读 · 0 评论 -
BPCLSTM
传统LSTMClassic LSTM在RNN 卷积神经网络上的改进,网络结构如图所示: Classic Lstm 的定义如下:分别表示输入门,遗忘门、输出门,是sigmoid 函数,表示bias ,是在t时刻的输入、激活状态、隐藏状态。W表示权重矩阵。比如 控制遗忘门怎么从隐藏状态获取值。C-LSTM (convlstm) CLSTM 【1】是最近生成的LSTM,主要用于输入是图像,用卷积操作替换向量乘法。LSTM处理序列...转载 2022-05-10 11:18:51 · 942 阅读 · 0 评论 -
可变形卷积的理解极其源码分析
传统的卷积操作形状是规则的,如下式 简单地说就是对特征图上的一块小区域进行加权平均,再输出相应值,其形状是规则的方形。作者觉得这个感受野太规则,不能很好地捕捉特征,所以在此基础上对卷积又加了偏置: 1、Pytorch里可变形卷积的初始化方式 开始是...原创 2022-05-11 11:58:56 · 3631 阅读 · 3 评论 -
深入理解ResNet原理解析及代码实现
目录1、问题2、如何解决3、为何有效4、网络实现5、网络输入部分6、网络中间卷积部分7、残差块实现8、网络输出部分9、网络特点10、总结如下1、问题梯度消失和梯度爆炸的问题阻止了刚开始的收敛,这一问题通过初始化归一化和中间层归一化得到了解决。解决了收敛的问题后又出现了退化的现象:随着层数加深,准确率升高然后急剧下降。且这种退化不是由过拟合造成,...原创 2022-05-15 12:59:48 · 3280 阅读 · 0 评论 -
全面解读Group Normalization,对比BN,LN,IN
前言Face book AI research(FAIR)吴育昕-何恺明联合推出重磅新作Group Normalization(GN),提出使用Group Normalization 替代深度学习里程碑式的工作Batch normalization,本文将从以下三个方面为读者详细解读此篇文章:What's wrong with BN ?How GN work ?Why GN wor...原创 2022-05-15 13:01:26 · 786 阅读 · 0 评论 -
一文搞懂深度网络初始化(Xavier and Kaiming initialization)
Xavier Initialization早期的参数初始化方法普遍是将数据和参数normalize为高斯分布(均值0方差1),但随着神经网络深度的增加,这方法并不能解决梯度消失问题。 Xavier初始化的作者,Xavier Glorot,在Understanding the difficulty of training ......原创 2022-06-09 23:45:16 · 10738 阅读 · 0 评论 -
同步Batch Normalization(syncbn)作用
1、BN训练与测试过程BN层有4个参数,gamma、beta、moving mean、moving variance。其中gamma、beta为学习参数,moving mean、moving variance为数据集统计均值与方差,不可学习。在训练过程中:在这里插入图片描述y为BN层输出,此时归一化的均值与方差为当前mini-batch的均值与方差。同时也记录moving mean、mo...原创 2022-05-19 13:40:17 · 2309 阅读 · 0 评论 -
深度学习中的组归一化(GroupNorm)
BN 需要用到足够大的批大小(例如,每个工作站采用 32 的批量大小)。一个小批量会导致估算批统计不准确,减小 BN 的批大小会极大地增加模型错误率。加大批大小又会导致内存不够用。归一化的分类BN,LN,IN,GN从学术化上解释差异:BatchNorm:batch方向做归一化,算N*H*W的均值 LayerNorm:channel方向做归一化,算C*H*W的均值 Instanc...原创 2022-05-19 13:40:30 · 4270 阅读 · 0 评论 -
Tikhonov正则化选取的方法
最小二乘矩阵求解与正则化,最小二乘是最常用的线性参数估计方法,早在高斯的年代,就用开对平面上的点拟合线,对高维空间的点拟合超平面。作为最小二乘代价函数的改进式中 ℷ >0 则称为正则化参数 (regularization parameters)代价函数关于变元 x 的共轭梯度令得到使得替代协方差矩阵的直接求逆的方法常称为Tikhonov 正则化在信...原创 2022-05-20 12:58:58 · 10071 阅读 · 0 评论 -
机器学习中的核技巧
核技巧、核函数真正接触核方法应该是在 SVM ,正常情况下,感知机算法和支持向量机都是默认数据是线性可分的,这类问题叫做线性分类问题。当数据线性不可分的时候,但高维可分(这个不理解可以多看看书),我们仍然想用线性分类的方法去解决,这个时候就需要用非线性变换将非线性问题转换成线性问题。于是,我们得到求解非线性分类问题的一个思路:1. 用一个非线性变换,将数据特征从原空间映射到一个新的空间,...原创 2022-05-27 14:25:14 · 739 阅读 · 0 评论 -
万能近似定理(universal approximation theorrm)
神经网络的架构(architecture)指网络的整体结构。大多数神经网络被组织成称为层的单元组,然后将这些层布置成链式结构,其中每一层都是前一层的函数。在这种结构中,第一层由下式给出:第二层:第三层,以此类推!可以看出,每一层的主体都是线性模型。线性模型,通过矩阵乘法将特征映射到输出,顾名思义,仅能表示线性函数。它具有易于训练的优点,因为当使用线性模型时,许多损失函数会导出凸...原创 2022-05-27 14:25:23 · 1572 阅读 · 0 评论 -
截断梯度、
强非线性函数往往倾向于非常大或非常小幅度的梯度。这导致的困难是,当参数梯度非常大时,梯度下降的参数更新可以将参数抛出很远,进入目标函数较大的区域,到达当前解所做的努力变成了无用功。梯度告诉我们,围绕当前参数的无穷小区域内最速下降的方向,这个无穷小区域之外,代价函数可能开始沿曲线背面而上。更新必须被选择为足够小,以避免过分穿越向上的曲面。我们通常使用衰减足够慢的学习率,使连续的步骤具有大致相同的学习...原创 2022-05-22 13:01:19 · 612 阅读 · 0 评论 -
高斯混合模型(GMM)
1. 有时候单一高斯分布不能很好的描述分布上图左面用单一高斯分布去描述,显然没有右图用两个高斯分布去描述的效果好。2. 引入混合高斯分这里插一句,为什么是“高斯混合模型”,而不是别的混合模型,因为从中心极限定理知,只要K足够大,模型足够复杂,样本量足够多,每一块小区域就可以用高斯分布描述。而且高斯函数具有良好的计算性能,所GMM被广泛地应用。 单一高斯分布公式 ...原创 2022-05-22 13:01:33 · 539 阅读 · 0 评论 -
自适应线性神经网络(Adaline)
目录对比Rosenblatt梯度下降最小化代价函数学习率的影响和选择对比Rosenblatt憋说话,先上图 -.-Rosenblatt的计算模型RosenblattAdaline的计算模型Adaline找不同:激活函数用阶跃函数换成了连续型函数,用一个Quantizer函数进行类别预测激活函数:用线性函数代替阶跃函数进行误差计算和...原创 2022-05-23 13:47:28 · 7337 阅读 · 1 评论 -
LeNet-5
1、LeNet-5模型简介LeNet-5 模型是 Yann LeCun 教授于 1998 年在论文 Gradient-based learning applied todocument recognitionr [1]中提出的,它是第一个成功应用于数字识别问题的卷积神经网络。在 MNIST 数据集上, LeNet-5 模型可以达到大约 99.2%的正确率。2、LeN...原创 2022-05-26 08:43:30 · 1449 阅读 · 0 评论