人工智能学习PyTorch实现CNN卷积层及nn.Module类示例分析
目录
- 1.CNN卷积层
- 2. 池化层
- 3.数据批量标准化
- 4.nn.Module类
- ①各类函数
- ②容器功能
- ③参数管理
- ④调用GPU
- ⑤存储和加载
- ⑥训练、测试状态切换
- ⑦ 创建自己的层
- 5.数据增强
1.CNN卷积层
通过nn.Conv2d可以设置卷积层,当然也有1d和3d。
卷积层设置完毕,将设置好的输入数据,传给layer(),即可完成一次前向运算。也可以传给layer.forward,但不推荐。
2. 池化层
池化层的核大小一般是2*2,有2种方式:
maxpooling:选择数据中最大值输出
avgpooling:计算数据的均值并输出
通过这一层可以实现降采样。
3.数据批量标准化
Batch Normalize,在计算过程中,通常输入的数据都是0-255的像素数据,不方便计算,因此可以通过nn.BatchNorm1d方法进行标准化。
标准化后,可以通过running_mean, running_var获取全局的均值和方差。
4.nn.Module类
①各类函数
Linear, ReLU, Sigmoid, Conv2d, Dropout等等
②容器功能
我们可以直接在定义自己的层的时候,把所有我们需要用到的层及相关函数放进去。使用的时候直接调用即可。
③参数管理
在这个类中可以直接生成我们需要的参数,并且自动带上梯度的需求。
④调用GPU
⑤存储和加载
训练过程中可以根据需求,比如训练到某一个点的时候达到了最优,可以将其存储。
⑥训练、测试状态切换
直接调用根节点的train, eval就可以切换。
⑦ 创建自己的层
还有其他功能,但现在还不理解,因此先不往上写了。
5.数据增强
数据增强主要用在我们数据不够用的时候,对原来的数据进行调整,从而生成新的数据。比如一张图片,我们可以对其进行翻转、旋转、大小调整、切割等操作 。导入数据的时候即可进行,具体实现方式如下。
以上就是人工智能学习PyTorch实现CNN卷积层及nn.Module类示例分析的详细内容,更多关于PyTorch中CNN及nn.Module的资料请关注我们其它相关文章!
相关推荐
-
对Pytorch中nn.ModuleList 和 nn.Sequential详解
简而言之就是,nn.Sequential类似于Keras中的贯序模型,它是Module的子类,在构建数个网络层之后会自动调用forward()方法,从而有网络模型生成.而nn.ModuleList仅仅类似于pytho中的list类型,只是将一系列层装入列表,并没有实现forward()方法,因此也不会有网络模型产生的副作用. 需要注意的是,nn.ModuleList接受的必须是subModule类型,例如: nn.ModuleList( [nn.ModuleList([Conv(inp_dim
-
pytorch 中的重要模块化接口nn.Module的使用
torch.nn 是专门为神经网络设计的模块化接口,nn构建于autgrad之上,可以用来定义和运行神经网络 nn.Module 是nn中重要的类,包含网络各层的定义,以及forward方法 查看源码 初始化部分: def __init__(self): self._backend = thnn_backend self._parameters = OrderedDict() self._buffers = OrderedDict() self._backward_hooks = Ordered
-
关于pytorch中全连接神经网络搭建两种模式详解
pytorch搭建神经网络是很简单明了的,这里介绍两种自己常用的搭建模式: import torch import torch.nn as nn first: class NN(nn.Module): def __init__(self): super(NN,self).__init__() self.model=nn.Sequential( nn.Linear(30,40), nn.ReLU(), nn.Linear(40,60), nn.Tanh(), nn.Linear(60,10), n
-
pytorch实现CNN卷积神经网络
本文为大家讲解了pytorch实现CNN卷积神经网络,供大家参考,具体内容如下 我对卷积神经网络的一些认识 卷积神经网络是时下最为流行的一种深度学习网络,由于其具有局部感受野等特性,让其与人眼识别图像具有相似性,因此被广泛应用于图像识别中,本人是研究机械故障诊断方面的,一般利用旋转机械的振动信号作为数据. 对一维信号,通常采取的方法有两种,第一,直接对其做一维卷积,第二,反映到时频图像上,这就变成了图像识别,此前一直都在利用keras搭建网络,最近学了pytroch搭建cnn的方法,进行一下代码
-
PyTorch上实现卷积神经网络CNN的方法
一.卷积神经网络 卷积神经网络(ConvolutionalNeuralNetwork,CNN)最初是为解决图像识别等问题设计的,CNN现在的应用已经不限于图像和视频,也可用于时间序列信号,比如音频信号和文本数据等.CNN作为一个深度学习架构被提出的最初诉求是降低对图像数据预处理的要求,避免复杂的特征工程.在卷积神经网络中,第一个卷积层会直接接受图像像素级的输入,每一层卷积(滤波器)都会提取数据中最有效的特征,这种方法可以提取到图像中最基础的特征,而后再进行组合和抽象形成更高阶的特征,因此CNN在
-
人工智能学习PyTorch实现CNN卷积层及nn.Module类示例分析
目录 1.CNN卷积层 2. 池化层 3.数据批量标准化 4.nn.Module类 ①各类函数 ②容器功能 ③参数管理 ④调用GPU ⑤存储和加载 ⑥训练.测试状态切换 ⑦ 创建自己的层 5.数据增强 1.CNN卷积层 通过nn.Conv2d可以设置卷积层,当然也有1d和3d. 卷积层设置完毕,将设置好的输入数据,传给layer(),即可完成一次前向运算.也可以传给layer.forward,但不推荐. 2. 池化层 池化层的核大小一般是2*2,有2种方式: maxpooling:选择数据中最大
-
人工智能学习PyTorch教程之层和块
对于多层感知机而言,整个模型做的事情就是接收输入生成输出.但是并不是所有的多层神经网络都一样,所以为了实现复杂的神经网络就需要神经网络块,块可以描述单个层.由多个层组成的组件或整个模型本身.使用块进行抽象的一个好处是可以将一些块组合成更大的组件. 从编程的角度来看,块由类(class)表示.它的任何子类都必须定义一个将其输入转换为输出的正向传播函数,并且必须存储任何必需的参数.注意,有些块不需要任何参数.最后,为了计算梯度,块必须具有反向传播函数.幸运的是,在定义我们自己的块时,由于autogr
-
Python深度学习pytorch神经网络图像卷积运算详解
目录 互相关运算 卷积层 特征映射 由于卷积神经网络的设计是用于探索图像数据,本节我们将以图像为例. 互相关运算 严格来说,卷积层是个错误的叫法,因为它所表达的运算其实是互相关运算(cross-correlation),而不是卷积运算.在卷积层中,输入张量和核张量通过互相关运算产生输出张量. 首先,我们暂时忽略通道(第三维)这一情况,看看如何处理二维图像数据和隐藏表示.下图中,输入是高度为3.宽度为3的二维张量(即形状为 3 × 3 3\times3 3×3).卷积核的高度和宽度都是2. 注意,
-
人工智能学习pyTorch的ResNet残差模块示例详解
目录 1.定义ResNet残差模块 ①各层的定义 ②前向传播 2.ResNet18的实现 ①各层的定义 ②前向传播 3.测试ResNet18 1.定义ResNet残差模块 一个block中,有两个卷积层,之后的输出还要和输入进行相加.因此一个block的前向流程如下: 输入x→卷积层→数据标准化→ReLU→卷积层→数据标准化→数据和x相加→ReLU→输出out 中间加上了数据的标准化(通过nn.BatchNorm2d实现),可以使得效果更好一些. ①各层的定义 ②前向传播 在前向传播中输入x,过
-
人工智能学习Pytorch张量数据类型示例详解
目录 1.python 和 pytorch的数据类型区别 2.张量 ①一维张量 ②二维张量 ③3维张量 ④4维张量 1.python 和 pytorch的数据类型区别 在PyTorch中无法展示字符串,因此表达字符串,需要将其转换成编码的类型,比如one_hot,word2vec等. 2.张量 在python中,会有标量,向量,矩阵等的区分.但在PyTorch中,这些统称为张量tensor,只是维度不同而已. 标量就是0维张量,只有一个数字,没有维度. 向量就是1维张量,是有顺序的数字,但没有"
-
人工智能学习Pytorch梯度下降优化示例详解
目录 一.激活函数 1.Sigmoid函数 2.Tanh函数 3.ReLU函数 二.损失函数及求导 1.autograd.grad 2.loss.backward() 3.softmax及其求导 三.链式法则 1.单层感知机梯度 2. 多输出感知机梯度 3. 中间有隐藏层的求导 4.多层感知机的反向传播 四.优化举例 一.激活函数 1.Sigmoid函数 函数图像以及表达式如下: 通过该函数,可以将输入的负无穷到正无穷的输入压缩到0-1之间.在x=0的时候,输出0.5 通过PyTorch实现方式
-
人工智能学习pyTorch自建数据集及可视化结果实现过程
目录 一.自定义数据集 1.文件夹映射 2.图片对应标签 3.训练及测试数据分割 4.数据处理 二.ResNet处理 三.训练及可视化 1.数据集导入 2.测试函数 3.训练过程及可视化 一.自定义数据集 现有数据如下: 5个文件夹,每个文件夹是神奇宝贝的一种. 每个图片形状.大小.格式不一. 我们训练CNN的时候需要的是tensor类型的数据,因此需要将所有的图片进行下列转换: 1.对文件夹编号,进行映射,比如妙蛙种子文件夹编号0,皮卡丘编号1等. 2.对文件夹中所有图片,进行编号的对应,这个
-
pytorch神经网络之卷积层与全连接层参数的设置方法
当使用pytorch写网络结构的时候,本人发现在卷积层与第一个全连接层的全连接层的input_features不知道该写多少?一开始本人的做法是对着pytorch官网的公式推,但是总是算错. 后来发现,写完卷积层后可以根据模拟神经网络的前向传播得出这个. 全连接层的input_features是多少.首先来看一下这个简单的网络.这个卷积的Sequential本人就不再啰嗦了,现在看nn.Linear(???, 4096)这个全连接层的第一个参数该为多少呢? 请看下文详解. class AlexN
-
Python人工智能学习PyTorch实现WGAN示例详解
目录 1.GAN简述 2.生成器模块 3.判别器模块 4.数据生成模块 5.判别器训练 6.生成器训练 7.结果可视化 1.GAN简述 在GAN中,有两个模型,一个是生成模型,用于生成样本,一个是判别模型,用于判断样本是真还是假.但由于在GAN中,使用的JS散度去计算损失值,很容易导致梯度弥散的情况,从而无法进行梯度下降更新参数,于是在WGAN中,引入了Wasserstein Distance,使得训练变得稳定.本文中我们以服从高斯分布的数据作为样本. 2.生成器模块 这里从2维数据,最终生成2
随机推荐
- AngularJs表单验证实例详解
- Flex自定义右键菜单具体实现
- .htaccess重定向和url重写详细介绍
- C#利用ReportViewer生成报表
- Linux C++ 使用condition实现阻塞队列的方法
- 实例讲解Java设计模式编程中的OCP开闭原则
- Kotlin + Spring Boot 请求参数验证的代码实例
- java 算法之归并排序详解及实现代码
- 使用ASP.NET.4.5.1+MVC5.0 搭建一个包含 Ninject框架 项目
- php绘图之加载外部图片的方法
- 自己编写的类似JS的trim方法
- DHTML form validation
- css实现的图片模糊效果
- 使用Grunt.js管理你项目的应用说明
- 推荐5 个常用的JavaScript调试技巧
- jQuery EasyUI Panel面板组件使用详解
- 金山反病毒20050119_日报
- JavaScript实现简易的天数计算器实例【附demo源码下载】
- 关于C++内存中字节对齐问题的详细介绍
- UIImage初始化的区别两种方法介绍(面试常见)