版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com CNN的层数越多,能够提取到的特征越丰富,但是简单地增加卷积层数,训练时会导致梯度弥散或梯度爆炸. 何凯明2015年提出了残差神经网络,即Reset,并在ILSVRC-2015的分类比赛中获得冠军. ResNet可以有效的消除卷积层数增加带来的梯度弥散或梯度爆炸问题. ResNet的核心思想是网络输出分为2部分恒等映射(identity mapping).残差映射(residual mapping)…
版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com 前面通过数据增强,ResNet-34残差网络识别CIFAR10,准确率达到了92.6. 这里对训练过程增加2个处理: 1.训练数据集做进一步处理:对图片随机加正方形马赛克. 2.每50个epoch,学习率降低0.1倍. 代码具体修改如下: 自定义transform: class Cutout(object): def __init__(self, hole_size): # 正方形马赛克的边长,像素…
版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com 在前一篇中的ResNet-34残差网络,经过训练准确率只达到80%. 这里对网络做点小修改,在最开始的卷积层中用更小(3*3)的卷积核,并且不缩小图片尺寸,相应的最后的平均池化的核改为4*4. 具体修改如下: class ResNet34(nn.Module): def __init__(self, block): super(ResNet34, self).__init__() # 初始卷积层核池…
版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com 在前一篇中的ResNet-34残差网络,经过减小卷积核训练准确率提升到85%. 这里对训练数据集做数据增强: 1.对原始32*32图像四周各填充4个0像素(40*40),然后随机裁剪成32*32. 2.按0.5的概率水平翻转图片. 代码具体修改如下: transform_train = transforms.Compose([ # 对原始32*32图像四周各填充4个0像素(40*40),然后随机裁剪…
版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com AlexNet在2012年ImageNet图像分类任务竞赛中获得冠军.网络结构如下图所示: 对CIFAR10,图片是32*32,尺寸远小于227*227,因此对网络结构和参数需做微调: 最后一个max-pool层删除 网络定义代码如下: class AlexNet(nn.Module): def __init__(self): super(AlexNet, self).__init__() self…
版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com VGGNet在2014年ImageNet图像分类任务竞赛中有出色的表现.网络结构如下图所示: 同样的,对32*32的CIFAR10图片,网络结构做了微调:删除了最后一层最大池化,具体参见网络定义代码,这里采用VGG19,并加入了BN: ''' 创建VGG块 参数分别为输入通道数,输出通道数,卷积层个数,是否做最大池化 ''' def make_vgg_block(in_channel, out_ch…
%matplotlib inline 训练一个分类器 上一讲中已经看到如何去定义一个神经网络,计算损失值和更新网络的权重. 你现在可能在想下一步. 关于数据? 一般情况下处理图像.文本.音频和视频数据时,可以使用标准的Python包来加载数据到一个numpy数组中. 然后把这个数组转换成 torch.*Tensor. 图像可以使用 Pillow, OpenCV 音频可以使用 scipy, librosa 文本可以使用原始Python和Cython来加载,或者使用 NLTK或 SpaCy 处理 特…
[转]CNN+BLSTM+CTC的验证码识别从训练到部署 转载地址:https://www.jianshu.com/p/80ef04b16efc 项目地址:https://github.com/kerlomz/captcha_trainer 作者:_Coriander 1. 前言 本项目适用于Python3.6,GPU>=NVIDIA GTX1050Ti,原master分支已经正式切换为CNN+LSTM+CTC的版本了,是时候写一篇新的文章了. 长话短说,开门见山,网络上现有的代码以教学研究为主…
pytorch的并行分为模型并行.数据并行 左侧模型并行:是网络太大,一张卡存不了,那么拆分,然后进行模型并行训练. 右侧数据并行:多个显卡同时采用数据训练网络的副本. 一.模型并行 二.数据并行 数据并行的操作要求我们将数据划5分成多份,然后发送给多个 GPU 进行并行的计算. 注意:多卡训练要考虑通信开销的,是个trade off的过程,不见得四块卡一定比两块卡快多少,可能是训练到四块卡的时候通信开销已经占了大头 下面是一个简单的示例.要实现数据并行,第一个方法是采用 nn.parallel…
Pytorch多GPU训练 临近放假, 服务器上的GPU好多空闲, 博主顺便研究了一下如何用多卡同时训练 原理 多卡训练的基本过程 首先把模型加载到一个主设备 把模型只读复制到多个设备 把大的batch数据也等分到不同的设备 最后将所有设备计算得到的梯度合并更新主设备上的模型参数 代码实现(以Minist为例) #!/usr/bin/python3 # coding: utf-8 import torch from torchvision import datasets, transforms…