利用Pytorch框架实现简单的卷积层和池化层使用(新手笔记)

目录

一、卷积层的使用

1、生成随机数据

2、创建卷积层

3、运用卷积层进行计算

 二、池化层的使用

1、创建随机数据

2、创建最大池化层

3、运用池化层计算


一、卷积层的使用

利用pytorch中的nn可以实现卷积层

1、生成随机数据

先利用randn随机生成一组3维数据x,x是维度为2×9×9的数据(如下面的代码)

2、创建卷积层

第一个参数需要与数据的通道数保持一致(即2×9×9中的2),所以我写的是x.shape[0]

第二个参数是输出通道数,也就是卷积核的组数,即需要输出的特征图个数

第三个参数是卷积核大小,一定要小于等于数据的大小(小于2×9×9中的9)否则无法计算

第四个是步长,表示以什么间隔移动

第五个是填充

第六个是是否有偏置,如果需要则为True

3、运用卷积层进行计算

运用卷积层的方法非常简单,如代码所示。

所用代码如下。

import torch.nn as nn
import torch

x = torch.randn(2, 9, 9) #创建随机数据
m = nn.Conv2d(x.shape[0], 3, 3, stride=1, padding=0, bias=True) # 创建卷积层
output = m(x) # 运用卷积层计算

print(x)
print(output)

 二、池化层的使用

与卷积层的实现方式相似

1、创建随机数据

这里的数据依旧为x。

2、创建最大池化层

第一个参数为卷积核大小,如果用的是2维池化,卷积核大小为3×3;如果是1维池化,卷积核大小为1×3

对于1维2维池化层的理解可以参考这篇博客:1维2维最大池化层理解

3、运用池化层计算

与卷积层的运用相似

所用代码如下

import torch.nn as nn
import torch

x = torch.randn(2, 9, 9) #创建随机数据
p = nn.MaxPool2d(3, stride=2) # 创建最大池化层,我用的2维最大池化
output_2 = p(x) # 运用池化层计算
print(output_2)

两种不同的层的使用方法类似,主要还是因为pytorch框架的便捷性。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
PyTorch中,卷积层池化层可以通过`torch.nn`模块中的相应类来实现。具体来说,可以使用`torch.nn.Conv2d`来实现卷积层使用`torch.nn.MaxPool2d`或`torch.nn.AvgPool2d`来实现池化层。 下面是一个使用`torch.nn.Conv2d`实现卷积层的例子: ```python import torch.nn as nn # 定义一个卷积层,输入通道数为3,输出通道数为16,卷积核大小为3*3,步长为1,填充为1 conv_layer = nn.Conv2d(in_channels=3, out_channels=16, kernel_size=3, stride=1, padding=1) # 定义一个输入张量,大小为batch_size*3*32*32,其中batch_size为批大小 input_tensor = torch.randn(batch_size, 3, 32, 32) # 将输入张量传入卷积层中进行计算 output_tensor = conv_layer(input_tensor) ``` 其中,`in_channels`表示输入张量的通道数,`out_channels`表示输出张量的通道数,`kernel_size`表示卷积核的大小,`stride`表示步长,`padding`表示填充。 下面是一个使用`torch.nn.MaxPool2d`实现池化层的例子: ```python import torch.nn as nn # 定义一个池化层,池化窗口大小为2*2,步长为2 pool_layer = nn.MaxPool2d(kernel_size=2, stride=2) # 将输入张量传入池化层中进行计算 output_tensor = pool_layer(input_tensor) ``` 其中,`kernel_size`表示池化窗口大小,`stride`表示步长。 需要注意的是,对于卷积层池化层,输入张量的维度应该为(batch_size, channels, height, width),其中`batch_size`表示批大小,`channels`表示通道数,`height`表示高度,`width`表示宽度。如果输入张量维度不符合要求,可以使用`torch.unsqueeze`来增加维度。 如果需要设置不同的窗口大小、填充和步长,可以在调用相应函数时进行设置,如: ```python # 定义一个卷积层,输入通道数为3,输出通道数为16,卷积核大小为5*5,步长为2,填充为2 conv_layer = nn.Conv2d(in_channels=3, out_channels=16, kernel_size=5, stride=2, padding=2) ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值