卷积操作代码举例————PyTorch

哔哩大学的PyTorch深度学习快速入门教程(绝对通俗易懂!)【小土堆】
的P17讲讲述了卷积操作的举例使用。

首先,要做的效果如图:一个很简单的输入图像,卷积核首先和输入图像左上角33对齐,然后对应格子相乘,再9个格子相加,即1+22+0*1…如下边第一个式子,得到卷积后的输出的第一个值——10。Stride=1的意思是,卷积核向左移动一个格子,再类似计算得出输出的第二个值——12。
在这里插入图片描述
其代码实现为:

import torch
import torch.nn.functional as F
# 卷积函数,即图片中的两个矩阵相乘再相加,1+4+0+0+1+2+2

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]])
# 构造卷积核

input = torch.reshape(input, (1, 1, 5, 5))
kernel = torch.reshape(kernel, (1, 1, 3, 3))
# 一个尺寸变化工具

print(input.shape)# input的尺寸
print(kernel.shape)

output = F.conv2d(input, kernel, stride=1)
print(output)
# 得出的ouput和图片中的卷积后的输出一样

# 当 stride=2 时,即卷积核在输入图像上每次移动两个格
output2 = F.conv2d(input, kernel, stride=2)
print(output2)


# 当 stride=1 、padding = 2 时,即先在输入图像的上下左右先填充一圈0,卷积核在输入图像上每次移动一个格
output3 = F.conv2d(input, kernel, stride=1, padding=1)
print(output3)

padding=1的效果如图,即先在输入图像的上下左右先填充一圈0。
在这里插入图片描述
结果如图,和自己计算的效果一样:
在这里插入图片描述

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值