卷积神经网络

经典深度卷积神经网络模型原理与实现

旧街凉风 提交于 2020-02-19 17:36:08
卷积神经网络(Convolutional Neural Network,CNN)最初是为解决图像识别等问题设计的,在早期的图像识别研究中,最大的挑战是如何组织特征,因为图像数据不像其他类型的数据那样可以通过人工理解来提取特征。卷积神经网络相比传统的机器学习算法,无须手工提取特征,也不需要使用诸如SIFT之类的特征提取算法,可以在训练中自动完成特征的提取和抽象,并同时进行模式分类,大大降低了应用图像识别的难度;相比一般的神经网络,CNN在结构上和图片的空间结构更为贴近,都是2D的有联系的结构,并且CNN的卷积连接方式和人的视觉神经处理光信号的方式类似。 卷积和池化的随机组合赋予了CNN很大的灵活性,因此也诞生了很多耳熟能详的经典网络:LeNet,AlexNet,VGGNet,NiN,Google Inception Net,ResNet,DenseNet这几种网络在深度和复杂度方面依次递增。下面将分别介绍这几种网络原理,架构以及实现(Pytorch实现)。 LeNet LeNet诞生于1994年,是 最早的深层卷积神经网络之一 ,并且推动了深度学习的发展。从1988年开始,在多次成功的迭代后,这项由Yann LeCun完成的开拓性成果被命名为LeNet5。它是第一个成功大规模应用在手写数字识别问题的卷积神经网络,在MNIST数据集中的正确率可以高达99.2%。

D2L-pytorch版 Task05笔记

狂风中的少年 提交于 2020-02-19 06:02:41
卷积神经网络基础 二维卷积层常用于图像处理。 二维互相关运算 二维互相关(cross-correlation)运算的输入是一个二维输入数组和一个二维核(kernel)数组,输出也是一个二维数组,其中核数组通常称为卷积核或过滤器(filter)。卷积核的尺寸通常小于输入数组,卷积核在输入数组上滑动,在每个位置上,卷积核与该位置处的输入子数组按元素相乘并求和,得到输出数组中相应位置的元素。图1展示了一个互相关运算的例子,阴影部分分别是输入的第一个计算区域、核数组以及对应的输出。 图1 二维互相关运算 二维卷积层 、 二维卷积层将输入和卷积核做互相关运算,并加上一个标量偏置来得到输出。卷积层的模型参数包括卷积核和标量偏置。 互相关运算与卷积运算 卷积层得名于卷积运算,但卷积层中用到的并非卷积运算而是互相关运算。我们将核数组上下翻转、左右翻转,再与输入数组做互相关运算,这一过程就是卷积运算。由于卷积层的核数组是可学习的,所以使用互相关运算与使用卷积运算并无本质区别。 特征图与感受野 二维卷积层输出的二维数组可以看作是输入在空间维度(宽和高)上某一级的表征,也叫特征图(feature map)。影响元素 x x x 的前向计算的所有可能输入区域(可能大于输入的实际尺寸)叫做 x x x 的感受野(receptive field)。 以图1为例

Datawhale 组队学习打卡营 任务13:卷积神经网络基础

落花浮王杯 提交于 2020-02-19 04:54:36
卷积神经网络基础 本章介绍卷积神经网络的基础概念,主要是卷积层和池化层,并解释填充、步幅、输入通道和输出通道的含义。 目录 二维卷积层 二维互相关运算 二维卷积层 互相关运算和卷积运算 特征图和感受野 填充和步幅 填充 步幅 多输入通道和多输出通道 多输入通道 多输出通道 1*1卷积层 卷积层和全连接层的对比 卷积层的简洁实现 池层 二维池化层 池化层的简洁实现 二维卷积层 最常见的二维卷积层,常用于处理图像数据。 二维互相关运算 二维互相关(cross-correlation)运算的输入是一个二维输入数组和一个二维核(kernel)数组,输出也是一个二维数组,其中核数组通常称为卷积核或过滤器(filter)。卷积核的尺寸通常小于输入数组,卷积核在输入数组上滑动,在每个位置上,卷积核与该位置处的输入子数组按元素相乘并求和,得到输出数组中相应位置的元素。图1展示了一个互相关运算的例子,阴影部分分别是输入的第一个计算区域、核数组以及对应的输出。 下面我们用corr2d函数实现二维互相关运算,它接受输入数组X与核数组K,并输出数组Y。 import torch import torch . nn as nn def corr2d ( X , K ) : # X,K 分别是输入数组和核数组 H , W = X . shape # H, W 输入数组的长和宽 h , w = K .

公益学习AI打卡之Task3

冷暖自知 提交于 2020-02-19 03:25:03
1.过拟合、欠拟合及解决方法 在机器学习的过程中,机器学习的效果和实际的真实值总会存在一部分的偏差。训练过程中出现的偏差叫做训练误差,而在测试过程中出现的误差称之为泛化误差。在模型的数据准备期,会将数据集分为训练数据和测试数据,测试数据就是从总体随机选取的一部分数据。当总体数据集的数量比较小时,可使用 K折交叉验证(K-fold cross-validation 的方法: 首先把总体数据集平分成为K等份,然后依次取出其中的一份作为测试数据集,剩下的作为训练数据集,然后进行K次训练和测试,因此每次实验中用于训练和测试的数据集都不同,最后将K次的实验结果再求取平均值。 在模型的训练的过程中,由于函数线性拟合,最容易出现的两个问题就是: 欠拟合和过拟合 欠拟合 :由于数据集的样本不足,或者训练周期较短与问题的模型复杂度较低,导致最后的训练误差和泛化误差都比较小 过拟合 :模型在训练的过程中,过度拟合训练数据集,从而有很低的训练误差,但是泛化误差确极高。 知道了过拟合和欠拟合的原因,则可以提出对应的方法来解决这个问题。 首先针对于过拟合问题,如果是训练数据集太小而导致的,主要的解决方案就是增大数据集,而训练数据集的大小足够,那么采用丢弃法(Dropout)那防止过拟合,其原理就是训练时随机选取隐藏层中的部分神经元失效,但在测试要利用所有的神经元。 然后是欠拟合问题

Learning a Deep Convolutional Network for Image Super-Resolution论文分析与pytorch代码

我只是一个虾纸丫 提交于 2020-02-19 00:53:47
Learning a Deep Convolutional Network for Image Super-Resolution 论文地址 简介 模型图 模型框架 算法流程 Patch extraction and representation non-linear mapping 非线性映射 Reconstruction 训练 测试 实验结果 Pytorch代码实现 使用说明 文件存放 运行代码 model.py data.py main.py run.py 运行操作 图片对比 Original image Bicubic image SRCNN image 后续工作 参考文章 论文地址 简介 超分辨率技术(Super-Resolution)是指从观测到的低分辨率图像重建出相应的高分辨率图像。 SR可分为两类:从多张低分辨率图像重建出高分辨率图像和从单张低分辨率图像重建出高分辨率图像。基于深度学习的SR,主要是基于单张低分辨率的重建方法,即Single Image Super-Resolution (SISR)。该论文创建了一种深度学习的方法,来实现单张低分辨率图像的重建。 SISR是一个逆问题,对于一个低分辨率图像,可能存在许多不同的高分辨率图像与之对应,因此通常在求解高分辨率图像时会加一个先验信息进行规范化约束。在传统的方法中,这个先验信息可以通过若干成对出现的低

Datawhale 组队学习打卡营 任务15:卷积神经网络进阶

隐身守侯 提交于 2020-02-19 00:14:52
目录 深度卷积神经网络(AlexNet) 1. AlexNet 2.载入数据集 3. 训练 使用重复元素的网络(VGG) 1. VGG11的简单实现 ⽹络中的⽹络(NiN) GoogLeNet 1. GoogLeNet模型 . . 深度卷积神经网络(AlexNet) LeNet: 在大的真实数据集上的表现并不尽如⼈意。 1.神经网络计算复杂。 2.还没有⼤量深⼊研究参数初始化和⾮凸优化算法等诸多领域。 机器学习的特征提取:手工定义的特征提取函数 神经网络的特征提取:通过学习得到数据的多级表征,并逐级表⽰越来越抽象的概念或模式。 神经网络发展的限制:数据、硬件 AlexNet #目前GPU算力资源预计17日上线,在此之前本代码只能使用CPU运行。 #考虑到本代码中的模型过大,CPU训练较慢, #我们还将代码上传了一份到 https://www.kaggle.com/boyuai/boyu-d2l-modernconvolutionalnetwork #如希望提前使用gpu运行请至kaggle。 import time import torch from torch import nn , optim import torchvision import numpy as np import sys sys . path . append ( "/home/kesci/input/" )

动手学深度学习之lenet

妖精的绣舞 提交于 2020-02-18 16:33:39
参考伯禹学习平台《动手学深度学习》课程内容内容撰写的学习笔记 原文链接:https://www.boyuai.com/elites/course/cZu18YmweLv10OeV/lesson/cuwTT4MTwpHpKfaKKDcYQt 感谢伯禹平台,Datawhale,和鲸,AWS给我们提供的免费学习机会!! 总的学习感受:伯禹的课程做的很好,课程非常系统,每个较高级别的课程都会有需要掌握的前续基础知识的介绍,因此很适合本人这种基础较差的同学学习,建议基础较差的同学可以关注伯禹的其他课程: 数学基础:https://www.boyuai.com/elites/course/D91JM0bv72Zop1D3 机器学习基础:https://www.boyuai.com/elites/course/5ICEBwpbHVwwnK3C course content lenet 模型介绍 lenet 网络搭建 运用lenet进行图像识别-fashion-mnist数据集 Convolutional Neural Networks 使用全连接层的局限性:(数据集中图像大小28*28,展开成一个764) 图像在同一列邻近的像素在这个向量中可能相距较远。它们构成的模式可能难以被模型识别。 对于大尺寸的输入图像,使用全连接层容易导致模型过大。 使用卷积层的优势: 卷积层保留输入形状。

动手学习深度学习-----笔记二

China☆狼群 提交于 2020-02-18 14:22:44
1 过拟合、欠拟合及其解决方案 一类是模型无法得到较低的训练误差,我们将这一现象称作欠拟合(underfitting); 另一类是模型的训练误差远小于它在测试数据集上的误差,我们称该现象为过拟合(overfitting)。训练误差(training error)指模型在训练数据集上表现出的误差和泛化误差(generalization error)。指模型在任意一个测试数据样本上表现出的误差的期望,并常常通过测试数据集上的误差来近似。 在实践中,我们要尽可能同时应对欠拟合和过拟合。虽然有很多因素可能导致这两种拟合问题,在这里我们重点讨论两个因素:模型复杂度和训练数据集大小。 给定训练数据集,模型复杂度和误差之间的关系: 一般来说,如果训练数据集中样本数过少,特别是比模型参数数量(按元素计)更少时,过拟合更容易发生。此外,泛化误差不会随训练数据集里样本数量增加而增大。 1.1 权重衰减方法 权重衰减等价于 L 2 L_2 L 2 ​ 范数正则化(regularization)。正则化通过为模型损失函数添加惩罚项使学出的模型参数值较小,是应对过拟合的常用手段。 1.1.1 L2 范数正则化(regularization) L 2 L_2 L 2 ​ 范数正则化在模型原损失函数基础上添加 L 2 L_2 L 2 ​ 范数惩罚项,从而得到训练所需要最小化的函数。 L 2 L_2 L 2 ​

[CNN] Understanding Convolution

烈酒焚心 提交于 2020-02-18 11:06:05
Ref: 从LeNet-5看卷积神经网络CNNs 关于这篇论文的一些博文的QAC: 1. 基本原理 MLP(Multilayer Perceptron,多层感知器)是一种前向神经网络(如下图所示),相邻两层网络之间全连接。 sigmoid通常使用tanh函数和logistic函数。 1998年Yann LeCun在论文“ Gradient-Based Learning Applied to Document Recognition ”中提出了LeNet-5,并在字母识别中取得了很好的效果。LeNet-5的结构如下图所示: input:输入图片,32*32像素; C1:5*5 卷积核 ,生成6个 feature maps ,共需要(6*5*5 + 6)=156个参数; S2:2*2个像素相加,然后乘以一个参数,加上一个偏置,共计2*6=12个参数; C3:5*5卷积核,生成16个feature maps,每个feature map由S2中 若干个 feature maps卷积得到,如图Table1所示; S4:和S2相同的操作,共计16*2 = 32个参数; C5:与S4全连接,共计(5*5*16*120+120)=48120个参数; F6:与C5全连接,共计(120*84+84) = 10164 个参数; output: 与F6全连接。 下面开始对各层进行具体分析。 卷积: C1

1. CNN卷积网络-初识

青春壹個敷衍的年華 提交于 2020-02-18 10:56:34
1. CNN卷积网络-初识 2. CNN卷积网络-前向传播算法 3. CNN卷积网络-反向更新 1. 前言 卷积神经网络是一种特殊的深层的神经网络模型,它的特殊性体现在两个方面, 它的神经元间的连接是非全连接的, 同一层中某些神经元之间的连接的权重是共享的(即相同的)。 它的非全连接和权值共享的网络结构使之更类似于生物 神经网络,降低了网络模型的复杂度(对于很难学习的深层结构来说,这是非常重要的),减少了权值的数量。 2. CNN卷积网络结构 我们先重整体的角度观察一下CNN卷积网络的结构: 上图的结构从左到右是,输入层、卷积层(Convolution Layer)、池化层(Pooling layer)、卷积层、池化层、全连接层(Fully Connected Layer)、全链接层、输出层。 卷积层+池化层的组合可以在隐藏层出现很多次,上图中出现两次。而实际上这个次数是根据模型的需要而来的。当然我们也可以灵活使用使用卷积层+卷积层,或者卷积层+卷积层+池化层的组合,这些在构建模型的时候没有限制。但是最常见的CNN都是若干卷积层+池化层的组合,如上图中的CNN结构。 在若干卷积层+池化层后面是全连接层(Fully Connected Layer, 简称FC),全连接层其实就是我们前面讲的DNN结构,只是输出层使用了Softmax激活函数来做图像识别的分类,这点我们在DNN中也有讲述