自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 资源 (1)
  • 收藏
  • 关注

翻译 《Recent Advances in Convolutional Neural Networks》(一)

摘要——在过去的一些年里,深度学习在许多类问题上都取得了很好的表现,例如视觉识别,语音识别和自然语言处理。在众多不同类型的深度神经网络中,CNN是被最深入研究的网络。早些年,因为缺少训练数据和电脑计算能力较差,很难在不过拟合的情况下训练一个高性能的CNN。在注释数据大量增长和GPUs快速发展的今天,涌现了许多关于CNN的研究,并在众多任务中取得了state-of-the-art的结果。本文,我们将提

2017-12-14 20:00:50 4638 2

原创 机器学习总结(四)——随机森林与GBDT(梯度提升决策树)

1. 随机森林简介随机森林采用的是bagging的思想,bagging即:通过在训练样本集中进行有放回的采样得到多个采样集,基于每个采样集训练出一个基学习器,再将基学习器结合起来共同实现分类或者回归。随机森林在对决策树进行bagging的基础上,在决策树的训练过程中引入了随机属性选择。传统决策树在选择划分属性的时候是在当前节点属性集合中选择最优属性,而随机森林则是对结点先随机选择包含k个属性的子集,

2017-12-07 20:51:07 5372

原创 机器学习总结(三)——SVM

1. SVM的原理是什么svm是一种二分类模型,是一种在特征空间中寻找间隔最大化的分离超平面的线性分类器。线性可分样本:可以通过硬间隔最大化学习线性分类器实现。近似线性可分:通过引入松弛变量,通过软间隔最大化,学习线性分类器;非线性样本:通过核技巧与软间隔最大化学习非线性支持向量机;2. SVM为什么采用间隔最大化利用间隔最大化求得的最优分离超平面是唯一的。分离超平面产生的分类结果是最鲁棒的

2017-12-07 20:45:40 919

原创 机器学习总结(二)——逻辑斯谛回归和最大熵模型

一、逻辑斯谛回归1. 逻辑斯蒂回归的优缺点优点:计算代价不高,易于理解和实现,且若采用随机梯度上升法可以在线学习; 速度快,存储资源低。缺点:可能容易欠拟合,分类精度不高,这个可能是因为我们无法找到足够的特征。只能处理两类分类问题,且必须是线性可分的;(在此基础上衍生出来的softmax可以用于多分类)2. 与其它的分类算法比较直接用线性回归做分类因为考虑到了所有样本点到分类决策面的距离,所以在两类

2017-12-07 20:39:38 1884

原创 机器学习总结(一)——有监督和无监督、生成模型和判别模型

1. 有监督与无监督的区别是否为有监督需要看输入的数据是否含有标签(label)。 数据含有标签,为有监督;不含有标签,为无监督;半监督学习:综合利用有类标签的数据和没有类标签的数据,来生成合适的分类函数。利用少量标注样本和大量未标注样本进行机器学习,从概率学习角度可理解为研究如何利用训练样本的输入边缘概率 P(x)和条件输出概率P (y|x)的联系设计具有良好性能的分类器。2. 生成模型与

2017-12-07 20:23:07 13092

原创 深度学习总结(十一)——early stopping

在训练中,我们希望在中间箭头的位置停止训练。而Early stopping就可以实现该功能,这时获得的模型泛化能力较强,还可以得到一个中等大小的w的弗罗贝尼乌斯范数。其与L2正则化相似,选择参数w范数较小的神经网络。可以用L2正则化代替early stopping。因为只要训练的时间足够长,多试几个lambda。总可以得到比较好的结果。Early stopping: 优点:只运行一次梯度下降,我们

2017-12-07 19:55:46 22220

原创 深度学习总结(十)——dropout

1. Inverted dropout大家都知道dropout是一个概率值,它表示的是a[l] (第l层的输入)中的元素以多大的概率置零。这里我们用它的对偶变量keep-prob代替dropout,它表示的是以多大的概率保留元素。可见dropout+keep-prob=1。现在我们以一个三层的神经网络为例,讨论keep-drop在神经网络中是如何发生作用的。import numpy as npkee

2017-12-07 19:33:48 5263

原创 深度学习总结(九)——正则化

1. 正则化简介以逻辑斯蒂回归为例,介绍正则化。 原来的成本函数(cost function):minw,bJ(w,b)=minw,b1m∑i=1mL(y^(i),y(i))\min_{w,b}J(w,b)=\min_{w,b}\frac{1}{m}\sum^m_{i=1}\mathcal L(\hat y^{(i)},y^{(i)}) 其中:w∈Rnx,b∈Rw∈\Bbb R^{n_x}, b

2017-12-07 15:33:37 1250

原创 深度学习总结(八)——训练、开发和测试集及偏差和方差

1. 数据集的划分小数据时代: 70%(训练集)/30%(测试集)或者60%(训练集)/20%(验证集)/20%(测试集) 大数据时代: 验证集和测试集的比例要逐渐减小,比如: 980000/10000/100002. 验证集和测试集的作用深度学习需要大量的数据,我们可能会采用网上爬取的方式获得训练集,容易出现训练集和验证集、测试集分布不一致的情况,由于验证集的目的就是为了验证不同的算法,选取效

2017-12-07 10:33:41 8345

原创 深度学习总结(七)——调参经验

关键词:Relu,batchnorm,dropout,adam,Learning Rate设置合理观察loss胜于观察准确率,Loss设计要合理,对比训练集和验证集的loss;Relu可以很好的防止梯度弥散问题,当然最后一层的激活函数千万慎用relu,如果是分类的用softmax;Batchnorm可以大大加快训练速度和模型性能;Dropout防止过拟合,可直接设置为0.5,即一半一半,测试

2017-12-06 21:49:42 2707

原创 深度学习总结(六)——梯度弥散、爆炸和过拟合

一、梯度弥散和爆炸1. 梯度弥散的解释梯度弥散的问题很大程度上是来源于激活函数的“饱和”。因为在后向传播的过程中仍然需要计算激活函数的导数,所以一旦卷积核的输出落入函数的饱和区,它的梯度将变得非常小。 使用反向传播算法传播梯度的时候,随着传播深度的增加,梯度的幅度会急剧减小,会导致浅层神经元的权重更新非常缓慢,不能有效学习。这样一来,深层模型也就变成了前几层相对固定,只能改变最后几层的浅层模型。梯度

2017-12-06 21:46:06 9734

原创 深度学习总结(五)——各优化算法

一、各优化算法简介1. 批量梯度下降(Batch gradient descent,BGD)θ=θ−η⋅∇θJ(θ)θ = θ - η \cdot \nabla_θ J(θ) 每迭代一步,都要用到训练集所有的数据。2. 随机梯度下降(Stochastic Gradient Descent,SGD)θ=θ−η⋅∇θJ(θ;x(i);y(i))θ = θ - η \cdot \nabla_θ J(θ;

2017-12-06 21:30:26 11112

原创 深度学习总结(四)——正则项系数、Batch_size设置

1. 正则项系数(λ)的设置建议一开始将正则项系数λ设置为0,先确定一个比较好的learning rate。然后固定该learning rate,给λ一个值(比如1.0),然后根据validation accuracy,将λ增大或者减小10倍(增减10倍是粗调节,当你确定了λ的合适的数量级后,比如λ = 0.01,再进一步地细调节,比如调节为0.02,0.03,0.009之类。)2. Batch s

2017-12-06 20:34:28 20061

原创 深度学习总结(三)——学习率设置

1. 学习率对训练的影响为了能够使得梯度下降法有较好的性能,我们需要把学习率的值设定在合适的范围内。太大的学习速率导致学习的不稳定,太小值又导致极长的训练时间。自适应学习速率通过保证稳定训练的前提下,达到了合理的高速率,可以减少训练时间。2. 学习率的设置固定学习率的设置:经验选择:一般情况下倾向于选取较小的学习速率以保证系统的稳定性,学习速率的选取范围在0.01~0.8之间。对于不同大小的数据

2017-12-06 20:31:50 30162

原创 深度学习总结(二)——激活函数的介绍

1. ReLU函数用ReLU代替了传统的Tanh或者Logistic。优点:ReLU本质上是分段线性模型,前向计算非常简单,无需指数之类操作;ReLU的偏导也很简单,反向传播梯度,无需指数或者除法之类操作;ReLU不容易发生梯度发散问题,Tanh和Logistic激活函数在两端的时候导数容易趋近于零,多级连乘后梯度更加约等于0;ReLU关闭了左边,从而会使得很多的隐层输出为0,即网络变得稀疏,

2017-12-06 20:27:15 843

原创 深度学习总结(一)——参数初始化

1. 参数初始化的目的是什么?为了让神经网络在训练过程中学习到有用的信息,这意味着参数梯度不应该为0。而我们知道在全连接的神经网络中,参数梯度和反向传播得到的状态梯度以及入激活值有关。那么参数初始化应该满足以下两个条件:初始化必要条件一:各层激活值不会出现饱和现象;初始化必要条件二:各层激活值不为0。2. 把参数都初始化为0会是比较好的初始化?这样做其实会带来一个问题,经过正向传播和反向传播后

2017-12-06 20:21:43 12735 1

原创 Python学习笔记

控制流一个重要的注释是,如果你从for或while循环中终止,任何对应的循环else块将不执行。continue语句被用来告诉Python跳过当前循环块中的剩余语句,然后继续进行下一轮循环。函数只有在形参表末尾的那些参数可以有默认参数值,即你不能在声明函数形参的时候,先声明有默认值的形参而后声明没有默认值的形参。这是因为赋给形参的值是根据位置而赋值的。例如,def func(a, b=5)是

2017-12-06 19:55:11 295

原创 PyTorch学习总结(七)——自动求导机制

自动求导机制从后向中排除子图每个变量都有两个标志:requires_grad和volatile。它们都允许从梯度计算中精细地排除子图,并可以提高效率。requires_grad如果有一个单一的输入操作需要梯度,它的输出也需要梯度。相反,只有所有输入都不需要梯度,输出才不需要。如果其中所有的变量都不需要梯度进行,后向计算不会在子图中执行。>>> x = Variable(torch.randn(5,

2017-12-06 19:46:50 14917 3

原创 PyTorch学习总结(六)——Tensor实现

1. Python的C扩展其实只要你懂得C语言编程,给Python添加新的内置(build-in)模块将十分容易。这些扩展(extension)模块可以实现两种无法直接在Python中进行的操作:他们可以实现新的内置对象类型,以及可以调用C语言的库函数和进行系统调用。为了支持扩展,Python API定义了一个函数(functions)、宏命(macros)令和变量(variables)的集合,该集

2017-12-06 19:32:02 3706

原创 PyTorch学习总结(五)——torch.nn

Parameters class torch.nn.Parameter()Variable的一种,常被用于模块参数(module parameter)。Parameters 是 Variable 的子类。Paramenters和Modules一起使用的时候会有一些特殊的属性,即:当Paramenters赋值给Module的属性的时候,他会自动的被加到 Module的 参数列表中(即:会出现在

2017-12-05 14:56:38 18483

原创 PyTorch学习总结(四)——Utilities

1. PackedSequence torch.nn.utils.rnn.PackedSequence这个类的实例不能手动创建。它们只能被pack_padded_sequence() 实例化。2. pack_padded_sequence torch.nn.utils.rnn.pack_padded_sequence()**输入:input: [seq_length x batch_si

2017-12-05 14:49:34 3318 1

原创 PyTorch学习总结(三)——ONNX

1.什么是ONNXOpen Neural Network Exchange (ONNX)是开放生态系统的第一步,它使人工智能开发人员可以在项目的发展过程中选择合适的工具;ONNX为AI models提供了一种开源格式。它定义了一个可以扩展的计算图模型,同时也定义了内置操作符和标准数据类型。最初我们关注的是推理(评估)所需的能力。Caffe2, PyTorch, Microsoft Cognitive

2017-12-05 14:43:22 57349 5

原创 PyTorch学习总结(二)——基于torch.utils.ffi的自定义C扩展

步骤一 准备好你的C代码首先,你写好你的C函数。接下来你可以找到一个模块的forward和backward函数的实现,其主要实现输入相加的功能。在你的.c文件中,你可以使用#include <TH/TH.h>和#include <THC/THC.h>指令来分别包含TH及THC。ffi工具可以确保编译器在build的过程中找到它们。/* src/my_lib.c */#include <TH/TH.

2017-12-05 14:39:28 6905

原创 PyTorch学习总结(一)——查看模型中间结果

如何查看预训练模型的中间结果 这里我们以PyTorch自带的预训练模型为例来讲解:# load the pretrained modelalexnet = models.alexnet(pretrained=True).cuda()print(alexnet)AlexNet ( (features): Sequential ( (0): Conv2d(3, 64, kernel_si

2017-12-05 14:35:19 22613 2

AstraSDK-0.4.0-win64

AstraSDK-0.4.0-win64.zip

2016-02-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除