自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

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

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

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

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

2017-12-07 20:51:07 5293

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

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

2017-12-07 20:45:40 871

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

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

2017-12-07 20:39:38 1811

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

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

2017-12-07 20:23:07 12897

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

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

2017-12-07 19:55:46 22114

原创 深度学习总结(十)——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 5220

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

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 1214

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

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

2017-12-07 10:33:41 8027

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

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

2017-12-06 21:49:42 2617

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

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

2017-12-06 21:46:06 9671

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

一、各优化算法简介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 10976

原创 深度学习总结(四)——正则项系数、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 19565

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

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

2017-12-06 20:31:50 29835

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

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

2017-12-06 20:27:15 820

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

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

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

原创 Python学习笔记

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

2017-12-06 19:55:11 264

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

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

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

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

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

2017-12-06 19:32:02 3676

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

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

2017-12-05 14:56:38 18415

原创 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 3290 1

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

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

2017-12-05 14:43:22 57148 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 6872

原创 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 22432 2

原创 《基于CUDA的并行程序设计》学习笔记(三)——下

第3章 CUDA编程基础3.5 “HelloWorld”CUDA 编程实例安装完Visual Studio 2013软件并配置好CUDA开发环境。本节我们正式CUDA编程。首先我们打开vs2013,点击新建工程,选中CUDA 7.5的模板。输入工程名等信息,完成工程的创建。 创建完工程后,会默认有一个kernel.cu的文件,其实现的是矩阵相加,这时候可以直接调试运行,如果没有报错则证明可以进行C

2017-11-27 10:25:58 887

原创 《基于CUDA的并行程序设计》学习笔记(三)——中

第3章 CUDA编程基础3.3 CUDA编程模型CUDA架构第一次引入了主机(host)端与设备(device)端的概念。如下图所示,一个完整的CUDA程序由主机代码和设备代码两部分组成。主机代码在主机端CPU上串行执行,是普通的C代码;设备代码部分在设备端GPU上并行执行,称为内核(kernel)。kernel函数不是一个完整的程序,而是任务中能被分解为并行执行的步骤的集合。CPU执行的串行程序负

2017-11-25 11:40:55 2347

原创 《基于CUDA的并行程序设计》学习笔记(三)——上

第3章 CUDA编程基础3.1 CUDA并行新思维CUDA并行编程新思维的出现,不仅成功地利用了新一代GPU的硬件架构优势,同时克服了GPGPU(general purpose computing GPU)编程的缺点,为程序员定义了一个最小的C语言扩展包,这使得熟悉标准编程语言(如 C、FORTRAN 等语言)的程序员可以轻松掌握CUDA编程方法。名为CUDA C的C语言拓展包包含3个主要的抽象概念

2017-11-23 20:17:54 2329

原创 《基于CUDA的并行程序设计》学习笔记(二)

第2章 GPU概述2.1 显卡、GPU和CUDA在进入CUDA编程学习之前,我们需要先搞清楚几个概念:显卡、GPU和CUDA分别是什么。2.1.1 显卡显卡(Video card,Graphics card)全称显示接口卡,又称显示适配器。显卡接在电脑主板上,它将电脑的数字信号转换成模拟信号让显示器显示出来。显卡分为独立显卡和集成显卡两种。2.1.2 GPUGPU(Graphic Processin

2017-11-22 20:53:35 1634

原创 《基于CUDA的并行程序设计》学习笔记(一)

第1章 并行计算概述1.1 并行计算简介对于计算机而言,“并行”就是同一时间间隔内,增加操作量,多个运算部件共同完成一个任务。并行计算(parallel computing)就是由运行在多个部件上的小任务合作来求解一个大规模计算问题的一种方法。 在科学计算领域,待求解问题的规模也越来越大,采用并行计算可以降低单个问题求解的时间,增加问题求解规模,提高问题求解精度,改善多机同时执行多个串行程序的容错

2017-11-22 15:55:24 6396

原创 莫烦PyTorch学习笔记(五)——模型的存取

本文主要是介绍如何对训练好的神经网络模型进行存取。 编辑器:spyder1.快速搭建神经网络这里采用上一节介绍的方法快速搭建一个小的神经网络:def save(): # save net1 net1 = torch.nn.Sequential( torch.nn.Linear(1, 10), torch.nn.ReLU(), torc

2017-11-21 15:14:48 5699 1

原创 莫烦PyTorch学习笔记(一)——Torch或Numpy

1.什么是NumpyNumpy系统是Python的一种开源的数值计算扩展,用python实现的科学计算包。这种工具可用来存储和处理大型矩阵,包括强大的N维数组对象Array,比较成熟的函数库等。numpy和稀疏矩阵运算包scipy配合使用更加方便。2.用Numpy还是TorchTorch自称为神经网络界的Numpy,它能将torch产生的tensor放在GPU中加速运算,就想Numpy会把array

2017-11-21 11:33:39 19554

原创 莫烦PyTorch学习笔记(四)——快速搭建法

本文主要是用PyTorch来实现另一种快速搭建神经网络的方法。 编辑器:spyder1.用类构建神经网络class Net(torch.nn.Module): def __init__(self, n_feature, n_hidden, n_output): super(Net, self).__init__() self.hidden = torch.n

2017-11-21 09:55:36 983

原创 莫烦PyTorch学习笔记(三)——分类

本文主要是用PyTorch来实现一个简单的分类任务。 编辑器:spyder1.引入相应的吧及建立数据集import torchfrom torch.autograd import Variableimport torch.nn.functional as Fimport matplotlib.pyplot as plt# make fake datan_data = torch.ones(

2017-11-20 19:43:40 15387 2

原创 莫烦PyTorch学习笔记(二)——回归

本文主要是用PyTorch来实现一个简单的回归任务。 编辑器:spyder

2017-11-20 18:48:55 11614 8

原创 Windows+Anaconda3安装PyTorch

Windows+Anaconda3安装PyTorch本文主要参考的是知乎上的一篇《PyTorch在64位Windows下的Conda包》:https://zhuanlan.zhihu.com/p/26871672该安装十分简单,主要是用了楼上作者提供的PyTorch的windows conda包,该包中内置CUDA 8.0,cuDNN v6(cuDNN v5的用户也可以使用)。配置要求Anacon

2017-11-20 15:59:05 36169 10

AstraSDK-0.4.0-win64

AstraSDK-0.4.0-win64.zip

2016-02-25

空空如也

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

TA关注的人

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