深度学习Pytorch框架
深度学习Pytorch框架
文章目录
- 深度学习Pytorch框架
- 前言
- 1. Pytorch命令之``nn.Sequential``
- 2. Pytorch命令之``nn.Conv2d``
- 3. Pytorch命令之``nn.BatchNorm2d``
- 4. Pytorch命令之``nn.MaxPool2d``
- 5. Pytorch命令之``nn.linear``
前言
最近在学习Pytorch深度学习框架,由于初次接触,故记录一下学习的历程~
Author:qyan.li
Date:2021.11.17
1. Pytorch命令之nn.Sequential
个人简单理解:nn.Sequential
通过序列创建神经网络结构
1 Pytorch官方文档Doc:
A sequential container. Modules will be added to it in the order they are passed in the constructor. Alternatively, an
OrderedDict
of modules can be passed in.2 解释说明:
nn.Sequential
本质上为序列化的容器,其中可存储各个模块,模块于容器中的顺序即为input输入其中用于输出output的顺序,同时支持字典的方式实现序列化容器的构建
import torch
from torch import nn
from collections import OrderedDict # 需导入OrderedDict,否则会报错def Test():# 此种方式仅可以使用索引访问某一层Module1 = nn.Sequential(nn.Conv2d(1,20,5),nn.ReLU(),nn.Conv2d(20,64,5),nn.ReLU())print(Module1)print("----------------------------")# 此种方式可借助于曾名访问某一层Module2 = nn.Sequential(OrderedDict([("con1",nn.Conv2d(1,20,5)),("Relu1",nn.ReLU()),("con2",nn.Conv2d(20,64,5)),("Relu2",nn.ReLU())]))print(Module2)if __name__ == '__main__':Test()'''output---
Sequential((0): Conv2d(1, 20, kernel_size=(5, 5), stride=(1, 1))(1): ReLU()(2): Conv2d(20, 64, kernel_size=(5, 5), stride=(1, 1))(3): ReLU())
----------------------------
Sequential((con1): Conv2d(1, 20, kernel_size=(5, 5), stride=(1, 1))(Relu1): ReLU()(con2): Conv2d(20, 64, kernel_size=(5, 5), stride=(1, 1))(Relu2): ReLU())'''
参考文献:https://blog.csdn.net/qq_27825451/article/details/90551513
2. Pytorch命令之nn.Conv2d
Conv2d在pytorch中负责构建卷积层操作-convolution
1 Pytorch官方文档Doc:
class
torch.nn.``Conv2d
(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode=‘zeros’, device=None, dtype=None)2 参数说明:
in_channels->输入维度
out_channels->输出维度
kernel_size->卷积和大小(可用于确定输出像素矩阵的宽度和高度)
stride = 1->卷积操作步长
padding = 0->补零操作(说明上下左右补零的个数)
padding = 1->input:33*33 output:35*35
padding_mode = ‘zeros’->周围补零
'''以图像为例说明:num:输入图像的个数dimension:每幅图像的维度:如RGBwidth:像素矩阵宽度height:像素矩阵高度'''import torch
from torch import nndef Test():# input:(num,dimension,width,height)input = torch.randn(3,1,4,6);# in_channels:input_dimension out_channels:output_dimensionconv = nn.Conv2d(in_channels = 1,out_channels = 100,kernel_size = (2,3))# output(p,q) input(x,y) conv(m,n) p = x-m+1;q = n-y+1output = conv(input)print('input:',input.data)print('output:',output.data)if __name__ == '__main__':Test()'''output:
input: torch.Size([3, 1, 4, 6])
output: torch.Size([3, 100, 3, 4])
'''
参考文献: https://blog.csdn.net/qq_42079689/article/details/102642610
3. Pytorch命令之nn.BatchNorm2d
卷积处理之后,在非线性激活函数之前,添加BatchNorm
进行数据归一化处理,使其分布一致,将数据强行拉回方差为0,均值为1的正态分布上,一方面使得数据分布一致,另外一方面避免梯度消失
参考文献: https://blog.csdn.net/bigFatCat_Tom/article/details/91619977
Pytorch命令之
nn.ReLu
ReLu函数在pytorch中负责构建非线性激活函数,保证网络的非线性特征
1 Pytorch官方文档Doc:
class
torch.nn.``ReLU
(inplace=False)2 参数说明:
inplace->True说明输入input会被改变,而False不会被改变
(inplace参数设置应考虑后续操作是否会对input产生需求)
import torch from torch import nndef Test():# ReLu->max(0,x)input = torch.randn(2,3)relu = nn.ReLU(inplace = False)output = relu(input)print('input:',input.data)print('output:',output.data)if __name__ == '__main__':Test()'''output: input: tensor([[ 1.1905, -0.5330, -1.0013],[-0.7853, 1.6066, -1.0514]]) output: tensor([[1.1905, 0.0000, 0.0000],[0.0000, 1.6066, 0.0000]]) '''
4. Pytorch命令之nn.MaxPool2d
nn.MaxPool2d
用于构建pytorch中池化操作,主要包括maxpooling,averagepooling
1 Pytorch官方文档Doc:
class
torch.nn.``MaxPool2d
(kernel_size, stride=None, padding=0, dilation=1, return_indices=False, ceil_mode=False)2 参数说明:
kernel_size->移动茶窗大小
stride->步长
padding->池化操作时周围是否补零
ceil_mode->True向上取整,False向下取整
import torch
from torch import nndef Test():# MaxPool2d3d or 4d# (num,width,height)input = torch.randn(3,2,4)maxpooling = nn.MaxPool2d(kernel_size = (2,2),stride = 2)output = maxpooling(input)print('input:',input)print('output:',output)if __name__ == '__main__':Test()'''output:
input: tensor([[[-0.9491, 0.3658, -0.8858, 0.0594],[ 1.8162, -0.6154, 0.1346, -1.7614]],[[-1.3035, -0.6148, 0.9820, -1.0435],[ 0.4091, -2.3076, 0.5005, 0.1074]],[[ 0.8871, 0.9837, 0.2303, 0.4890],[ 0.1333, 0.2272, 0.6926, 0.3049]]])
output: tensor([[[1.8162, 0.1346]],[[0.4091, 0.9820]],[[0.9837, 0.6926]]])
'''
Tips:输入必须为三维数据:torch.randn(3,2,4)->表明共有3个数据,数据大小宽度width = 2,长度为length = 4
原因:3d相较于2d多出的一维用于将2d的数据全部放置于统一的input中
否则会报错:RuntimeError: non-empty 3D or 4D (batch mode) tensor expected for input
5. Pytorch命令之nn.linear
nn.linear
主要用于构建神经网络架构中的全链接层,用于决定最终的输出
Pytorch官方文档Doc:
class
torch.nn.``Linear
(in_features, out_features, bias=True, device=None, dtype=None)参数说明:
in_features:输入向量的维度(size of each input sample)
out_features:输出向量的维度(size of each output sample)
bias:全链接层是否会学习到偏置(bias)
import torch
from torch import nn
from collections import OrderedDictdef Test():input = torch.randn(100,256)fc = nn.Linear(256,10)output = fc(input)print(output.size())if __name__ == '__main__':Test()'''ouput---
input->torch.Size([100,256])
ouput->torch.Size([100, 10])
'''
out_features->不仅是输出的维度,同时也是分类问题中的类别数目(例如:手写数字识别问题中,输入图像经过全链接层会输出10维的数据,每个数据代表该数字属于0-9类别的概率)
深度学习Pytorch框架相关推荐
- 数据增强 transform_深度学习-Pytorch框架学习之数据处理篇
前言 数据是深度学习的核心,大部分论文里都会提到data-driven这个词,也就是数据驱动的意思.基本的模型搭建完成后,如何处理数据,如何将数据送给网络,如何做数据增强等等,对于提高网络的性能都十分 ...
- 深度学习Pytorch框架Tensor张量
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者 | 秦一@知乎(已授权) 来源 | https://zhuan ...
- Karpathy更新深度学习开源框架排名:TensorFlow第一,PyTorch第二
上周,Keras作者.谷歌研究科学家François Chollet晒出一张图,他使用Google Search Index,展示了过去三个月,ArXiv上提到的深度学习框架排行,新智元也做了报道: ...
- 【完结】12大深度学习开源框架(caffe,tf,pytorch,mxnet等)快速入门项目
这是一篇总结文,给大家来捋清楚12大深度学习开源框架的快速入门,这是有三AI的GitHub项目,欢迎大家star/fork. https://github.com/longpeng2008/yousa ...
- 深度学习主流框架介绍(PyTorch、TensorFlow、Keras、Caffe、Theano、MXNET)
深度学习主流框架介绍(PyTorch.TensorFlow.Keras.Caffe.Theano.MXNET) 1.Theano Theano是最早的深度学习框架之一,由 Yoshua Bengio ...
- 12大深度学习开源框架(caffe,tensorflow,pytorch,mxnet等)汇总详解
这是一篇总结文,给大家来捋清楚12大深度学习开源框架的快速入门,这是有三AI的GitHub项目,欢迎大家star/fork. https://github.com/longpeng2008/yousa ...
- 斯坦福CS231n 2017最新课程:李飞飞详解深度学习的框架实现与对比
斯坦福CS231n 2017最新课程:李飞飞详解深度学习的框架实现与对比 By ZhuZhiboSmith2017年6月19日 13:37 斯坦福大学的课程 CS231n (Convolutio ...
- 【杂谈】超过12个,150页深度学习开源框架指导手册与GitHub项目,初学CV你值得拥有...
之前我们公众号输出了很多深度学习开源框架相关的内容,今天整理成技术手册给大家分享以方便阅读,下面是详细信息. 开源框架背景 现如今开源生态非常完善,深度学习相关的开源框架众多,光是为人熟知的就有caf ...
- 【杂谈】面向新手的深度学习开源框架指导手册与GitHub项目,欢迎加入我们的开源团队...
之前我们公众号输出了很多深度学习开源框架相关的内容,现在整理成技术手册给大家分享以方便阅读,下面是详细信息. 开源框架背景 现如今开源生态非常完善,深度学习相关的开源框架众多,光是为人熟知的就有caf ...
最新文章
- C语言——球体体积判断素数用递归计算Fibonacci数列
- Android中Log日志的管理之log工具类
- 在.NET Core 中收集数据的几种方式
- 由马化腾谈“微博修改功能”,看什么是优秀的产品经理
- ansible之二:模块用法
- 安徽省第二次计算机水平考试,2006第二次安徽省计算机水平考试试卷(ACCESS).doc...
- CentOS6.5利用Docker部署ShowDoc
- VIM命令记录和cscope结合使用
- 圈子论坛社区小程序,交友,博客,社交,陌生人社交,即时聊天 前后端开源PHP
- mysql查询所有男生中姓王的_数据库6.22
- android平板生产力工具,重塑应用生态,让安卓平板成为生产力工具:华为MatePad Pro简体验!...
- 西门子PLC与安川变频器Modbus通信
- Redhat_rhel8.0_DNS服务搭建步骤
- 在线2000人的服务器配置,同时线上人数约2000人需要什么等级服务器?
- 向日葵公主与驴的寓言故事
- 双网卡一个连接外网一个连接内网的处理方法
- 【Linux】apache的认证授权和访问控制
- 关于bash quote的认识
- 10个新的随机jQuery插件2013年9月
- JS 排序算法详解(冒泡排序,选择排序,插入排序,希尔排序,快速排序)