当前位置:网站首页>Pytorch convolution operation
Pytorch convolution operation
2022-07-01 04:45:00 【booze-J】
article
pytorch Convolution operation official document
Here we use nn.conv2d To explain the convolution operation .
What is convolution ?
The convolution kernel moves on the input image , Then multiply and sum the values on the convolution kernel and the corresponding position on the input image .Stride=1
To control the moving step of convolution kernel .
Convolution operation example code :
import torch.nn.functional as F
import torch
# The input image (5X5)
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]])
# Convolution kernel (3X3)
kernel = torch.tensor([[1,2,1],
[0,1,0],
[2,1,0]])
# input: torch.Size([5, 5])
print("input:\n",input.shape)
# kernel:torch.Size([3, 3])
print("kernel:\n",kernel.shape)
input = torch.reshape(input,(1,1,5,5))
kernel = torch.reshape(kernel,(1,1,3,3))
# input:torch.Size([1, 1, 5, 5])
print("input:\n",input.shape)
# kernel:torch.Size([1, 1, 3, 3])
print("kernel:\n",kernel.shape)
# Convolution operation Observe stride Influence on convolution results
output = F.conv2d(input,kernel,stride=1)
print('output\n',output)
output2 = F.conv2d(input,kernel,stride=2)
print('output2\n',output2)
# Perform volume and operation Expand and fill the boundary of the input image Observe padding Influence on convolution results
output3 = F.conv2d(input,kernel,stride=1,padding=1)
print("output\n",output3)
Part of the code explanation :
1.reshape The role of
# reshape front
# input: torch.Size([5, 5]) kernel:torch.Size([3, 3])
input = torch.reshape(input,(1,1,5,5))
kernel = torch.reshape(kernel,(1,1,3,3))
# reshape after
# input:torch.Size([1, 1, 5, 5]) kernel:torch.Size([1, 1, 3, 3])
Why do I need to be right input and kernel Conduct reshape This operation ?
Because use torch.nn.functional.conv2d
The input parameters are limited , You can see conv2d Requirements for input parameters , requirement input The input is (minibatch,in_channels,iH,iW), among in_channels Indicates the number of channels ,iH Indicates the height of the input image ,iW Indicates the width of the input image .weigt The input is kernel( Convolution kernel ), You can see that it's right weight The parameter requirements of are similar to input, among outchannels Indicates the number of output channels ,in_channels Indicates the number of input channels (groups Default equal to 1),kH Represents the height of the convolution kernel ,kW Represents the width of the convolution kernel . So you need to input and kernel Conduct reshape operation .
2.stride Parameters
# Convolution operation Observe stride Influence on convolution results
output = F.conv2d(input,kernel,stride=1)
print('output\n',output)
output2 = F.conv2d(input,kernel,stride=2)
print('output2\n',output2)
Running results :
You can see Official documents Yes Stride The explanation of :
- stride – the stride of the convolving kernel. Can be a single number or a tuple (sH, sW). Default: 1
When stride What you enter is a number , Then this number is the horizontal and vertical moving steps of the convolution kernel , When stride When you enter a tuple , The steps of the convolution kernel moving horizontally and vertically can be set respectively .
3.padding Parameters
# Perform volume and operation Expand and fill the boundary of the input image Observe padding Influence on convolution results
output3 = F.conv2d(input,kernel,stride=1,padding=1)
print("output\n",output3)
In the above code padding The function of parameters is equivalent to , Expand the horizontal and vertical boundaries of the input image 1 Length and fill 0, Then perform convolution operation .
You can see Official documents Yes Padding The explanation of :
- padding – implicit paddings on both sides of the input. Can be a string {‘valid’, ‘same’}, single number or a tuple (padH, padW). Default: 0 padding=‘valid’ is the same as no padding. padding=‘same’ pads the input so the output has the same shape as the input. However, this mode doesn’t support any stride values other than 1.
When padding What you enter is a number , Then this number is the horizontal and vertical boundary expansion filling of the image ( The default filling value is 0) The length of , When padding When you enter a tuple , You can set the length of the horizontal and vertical boundaries of the image respectively .
边栏推荐
- Take a cold bath
- LM小型可编程控制器软件(基于CoDeSys)笔记十九:报错does not match the profile of the target
- pytorch中常用数据集的使用方法
- Dual Contrastive Learning: Text Classification via Label-Aware Data Augmentation 阅读笔记
- How to do the performance pressure test of "Health Code"
- Selenium opens the Chrome browser and the settings page pops up: Microsoft defender antivirus to reset your settings
- 数据加载及预处理
- [godot] unity's animator is different from Godot's animplayer
- 2022年上海市安全员C证考试题模拟考试题库及答案
- 神经网络-卷积层
猜你喜欢
Pytorch(一) —— 基本语法
神经网络-使用Sequential搭建神经网络
The index is invalid
How to use maixll dock
Why is Internet thinking not suitable for AI products?
[2020 overview] overview of link prediction based on knowledge map embedding
2022.2.7-2.13 AI industry weekly (issue 84): family responsibilities
[ue4] event distribution mechanism of reflective event distributor and active call event mechanism
分布式全局唯一ID解决方案详解
OdeInt與GPU
随机推荐
Announcement on the list of Guangdong famous high-tech products to be selected in 2021
2022 a special equipment related management (elevator) simulation test and a special equipment related management (elevator) certificate examination
2022 Shanghai safety officer C certificate examination question simulation examination question bank and answers
Basic usage, principle and details of session
软件研发的十大浪费:研发效能的另一面
Pytest automated testing - compare robotframework framework
JS rotation chart
【硬十宝典】——2.【基础知识】开关电源各种拓扑结构的特点
Extension fragment
slf4j 简单实现
细数软件研发效能的七宗罪
技术分享| 融合调度中的广播功能设计
【硬十宝典】——1.【基础知识】电源的分类
LeetCode_66(加一)
JVM栈和堆简介
Summary of acl2021 information extraction related papers
OdeInt與GPU
Fitness without equipment
js解决浮点数相乘精度丢失问题
OdeInt与GPU