pytorch初学笔记(八):神经网络之卷积操作
创始人
2024-02-03 21:18:16

 目录

一、卷积操作

 二、二维卷积操作

2.1 torch.nn.functional

 2.2 conv2d方法介绍

2.2.1 使用该方法需要引入的参数

2.2.2 常用参数

2.2.3 关于对input和weight的shape详解

 三、代码实战

3.1 练习要求 

3.2 tensor的reshape操作 

3.3 不同stride的对比  

3.4 不同padding的对比

3.5 完整代码


一、卷积操作

torch.nn — PyTorch 1.13 documentation

 

 

 二、二维卷积操作

2.1 torch.nn.functional

 代码中引入torch.nn.functional,起别名为F

import torch.nn.functional as F

 

 2.2 conv2d方法介绍

什么是二维卷积?

二维卷积nn.Conv2d用于图像数据,对宽度和高度都进行卷积。 

 

2.2.1 使用该方法需要引入的参数

torch.nn.functional.conv2d(inputweightbias=Nonestride=1padding=0

dilation=1groups=1) → Tensor

 

 

2.2.2 常用参数

  • input:输入矩阵,为tensor型,
  • weight:卷积核 ,为tensor型
  • stride:步长,默认为1
  • padding:填充大小,默认为0

 


2.2.3 关于对input和weight的shape详解

方法中对input和weight要求的shape都需要是4维的。

1.  input的shape要求:      

  • minibatch:batch中的样例个数
  • in_channels:每个样例数据的通道数
  • iH:每个样例的高(行数)
  • iW:每个样例的宽(列数)

2.  weight的shape要求:

  • out_channels:卷积核的个数
  • in_channels/groups:每个卷积核的通道数
  • kH:每个卷积核的高(行数)
  • kW:每个卷积核的宽(列数)

(29条消息) 如何理解卷积神经网络中的通道(channel)_Medlen的博客-CSDN博客_卷积神经网络通道数

正常定义的tensor型shape均为二维,即只有长和宽,

因此需要使用reshape方法进行尺寸重定义。

 

 三、代码实战

3.1 练习要求 

代码将完成以下操作:

  1. 输入如下图所示的5*5矩阵
  2. 卷积核为下图所示的3*3矩阵
  3. 设置步长stride为1,使用conv2d方法进行卷积操作
  4. 输出结果 

3.2 tensor的reshape操作 

 输入的input大小为5*5,输入的kernel大小为3*3,均不符合conv2d方法中要求的shape大小,因此使用reshape方法进行tensor的尺寸重定义操作。

torch.reshape方法输入的第一个参数为需要改变大小的tensor,第二个参数为需要改变的大小,使用括号括起来的4个数字,前两个数字均为1,后两个数字为tensor的长和宽。

import torch
import torch.nn.functional as F
# 输入
input = torch.tensor([[1,2,0,3,1],[0,1,2,3,1],[1,2,1,0,0],[5,2,3,1,1],[2,1,0,1,1]])# 卷积核
kernel = torch.tensor([[1,2,1],[0,1,0],[2,1,0]])print(input.shape)
print(kernel.shape)# 重新定义尺寸,把尺寸改成四个数,1个batchsize,1个通道,长和宽和之前一样
input = torch.reshape(input,(1,1,5,5))
kernel = torch.reshape(kernel,(1,1,3,3))print(input.shape)
print(kernel.shape)

输出: 

 可见两个tensor的大小都已经成功被改变,可以输入conv2d中进行下一步操作。 

output = F.conv2d(input,kernel)
print(output)

输出: 

 可见已成功进行卷积操作。

3.3 不同stride的对比  

 步长(stride):

卷积核是在图片上移动后遍历每一个像素,每次移动的大小就是步长stride

#stride=1或2时的输出
output1 = F.conv2d(input,kernel,stride=1)
print(output1)
output2 = F.conv2d(input,kernel,stride=2)
print(output2)

输出:

 

可以看到stride=1时输出的tensor大小为3*3,stride=2时为2*2。

 

3.4 不同padding的对比

padding(填充):

 习惯上,我们可以使用0来对图像进行填充。规定p( padding )代表填充的层数。

是为了满足输出的图像的维度要求,最终图像的输出宽度会=原来输出宽度+2padding,因为是周围填充

# padding=1或2时的
output3 = F.conv2d(input,kernel,stride=1,padding=1)
print(output3)
output4 = F.conv2d(input,kernel,stride=1,padding=2)
print(output4)

输出:

可以看到不同的padding输出的tensor大小不同。 

3.5 完整代码

import torch
#引入F
import torch.nn.functional as F# 输入
input = torch.tensor([[1,2,0,3,1],[0,1,2,3,1],[1,2,1,0,0],[5,2,3,1,1],[2,1,0,1,1]])# 卷积核
kernel = torch.tensor([[1,2,1],[0,1,0],[2,1,0]])print(input.shape)
print(kernel.shape)# 重新定义尺寸,把尺寸改成四个数,1个batchsize,1个通道,长和宽和之前一样
input = torch.reshape(input,(1,1,5,5))
kernel = torch.reshape(kernel,(1,1,3,3))print(input.shape)
print(kernel.shape)#stride=1或2时的输出
output1 = F.conv2d(input,kernel,stride=1)
print(output1)
output2 = F.conv2d(input,kernel,stride=2)
print(output2)# padding=1或2时的
output3 = F.conv2d(input,kernel,stride=1,padding=1)
print(output3)
output4 = F.conv2d(input,kernel,stride=1,padding=2)
print(output4)

上一篇:LVS-DR模式

下一篇:MapReduce基础

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...