当前位置:网站首页>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 .
边栏推荐
- 【硬十宝典目录】——转载自“硬件十万个为什么”(持续更新中~~)
- pytorch中常用数据集的使用方法
- 测量三相永磁同步电机的交轴直轴电感
- RDF query language SPARQL
- This sideline workload is small, 10-15k, free unlimited massage
- 技术分享| 融合调度中的广播功能设计
- 2022 G2 power station boiler stoker examination question bank and G2 power station boiler stoker simulation examination question bank
- Section 27 remote access virtual private network workflow and experimental demonstration
- PR 2021 quick start tutorial, learn about the and functions of the timeline panel
- Question bank and answers for chemical automation control instrument operation certificate examination in 2022
猜你喜欢

分布式架构系统拆分原则、需求、微服务拆分步骤

分布式-总结列表

VIM简易使用教程

Maixll-Dock 快速上手

Sorting out 49 reports of knowledge map industry conference | AI sees the future with wisdom

【硬十宝典】——1.【基础知识】电源的分类

2022 tea master (intermediate) examination question bank and tea master (intermediate) examination questions and analysis

Maixll dock quick start

Pytorch(四) —— 可视化工具 Visdom

Introduction to JVM stack and heap
随机推荐
Pytorch(二) —— 激活函数、损失函数及其梯度
LM small programmable controller software (based on CoDeSys) note 20: PLC controls stepping motor through driver
Leecode question brushing record 1332 delete palindrome subsequence
2022 gas examination question bank and online simulation examination
PgSQL failed to start after installation
神经网络-最大池化的使用
C#读写应用程序配置文件App.exe.config,并在界面上显示
分布式锁的实现
This sideline workload is small, 10-15k, free unlimited massage
洗个冷水澡吧
Shell analysis server log command collection
2022年上海市安全员C证考试题模拟考试题库及答案
2022危险化学品生产单位安全生产管理人员题库及答案
Matters behind the construction of paint testing laboratory
Pytorch(一) —— 基本语法
Quelques outils dont les chiens scientifiques pourraient avoir besoin
Pytorch(三) —— 函数优化
[2020 overview] overview of link prediction based on knowledge map embedding
LeetCode_58(最后一个单词的长度)
[difficult] sqlserver2008r2, can you recover only some files when recovering the database?