[PyTorch][chapter 34][池化层与采样]

前言:

       这里主要讲解一下卷积神经网络中的池化层与采样

目录


  1. DownSample
  2. Max pooling
  3. avg pooling
  4. upsample
  5. ReLu

1: DownSample

       下采样,间隔一定行或者列进行采样,达到降维效果

     早期LeNet-5 就采样该采样方式。

 LeNet-5


 

2 Max pooling

    最大值采样

    取滑动窗口内的最大值,做采样值,达到降维效果

    AlexNet 采用该种采样方式,取窗口内最大值或平均值

 

   如最后一个窗口

  max(7,6,4,2)=7

PyTorch nn 模块提供了API ,注意输入必须是3维或者以上的张量

至少是如下格式(channel,width, height)

# -*- coding: utf-8 -*-
"""
Created on Tue May 16 15:53:25 2023

@author: chengxf2
"""

import torch
import torch.nn as nn

def run():
    
    data = torch.arange(0, 16.0).view(1,4,4)
    print("\n input:\n",data)
    layer = nn.MaxPool2d(2,stride=2)
    
    pool = layer(data)
    print("\n pool \n",pool)
    
run()
    


3  avg pooling

     平均采样

     取滑动窗口内的平均值,做采样值,达到降维效果

    

 PyTorch 里面提供了采样函数 F

import torch.nn.functional as F

m = nn.AvgPool2d((2, 2), stride=(2, 2))

 


4 upsample

   上采样,对应的API 函数如下

torch.nn.functional.interpolate(input,
 size=None, 
scale_factor=None,
 mode='nearest', 
align_corners=None, 
recompute_scale_factor=None)

功能:

利用插值方法,对输入的张量数组进行上\下采样操作,换句话说就是科学合理地改变数组的尺寸大小,尽量保持数据完整。

参数

input(Tensor)需要进行采样处理的数组
size(int或序列)输出空间的大小
scale_factor空间大小的乘数
mode(str)用于采样的算法。'nearest'| 'linear'| 'bilinear'| 'bicubic'| 'trilinear'| 'area'。默认:'nearest'
align_corners(bool)在几何上,我们将输入和输出的像素视为正方形而不是点。如果设置为True,则输入和输出张量按其角像素的中心点对齐,保留角像素处的值。如果设置为False,则输入和输出张量通过其角像素的角点对齐,并且插值使用边缘值填充用于边界外值,使此操作在保持不变时独立于输入大小scale_factor。
recompute_scale_facto(bool)重新计算用于插值计算的 scale_factor。当scale_factor作为参数传递时,它用于计算output_size。如果recompute_scale_factor的False或没有指定,传入的scale_factor将在插值计算中使用。否则,将根据用于插值计算的输出和输入大小计算新的scale_factor(即,如果计算的output_size显式传入,则计算将相同 )。注意当scale_factor 是浮点数,由于舍入和精度问题,重新计算的 scale_factor 可能与传入的不同。

 

import torch.nn.functional as F
import torch

a=torch.arange(12,dtype=torch.float32).reshape(1,2,2,3)
b=F.interpolate(a,size=(4,4),mode='bilinear')
# 这里的(4,4)指的是将后两个维度放缩成4*4的大小
print(a)
print(b)
print('原数组尺寸:',a.shape)
print('size采样尺寸:',b.shape)

例2:

  输入 x [1,16,7,7]   [img_number,channel, width,height]

   通过插值后只会更改为其长和宽

 


5 ReLu

   卷积神经网络基本组成部分如下,因为经过

conv2d, batchNorm,Pooling 操作后,图像像素值可能是负的。

图像的像素值不能为负的的,所以正常要加个ReLu 函数

 

     relu(x)= max(0,x)

    relu(x)=max(0,x)

 

 

参考:

F.interpolate——数组采样操作_视觉萌新、的博客-CSDN博客

课时66 池化层与采样_哔哩哔哩_bilibili

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
PyTorch中的三维池化层包括平均池化和最大池化。平均池化层用于对输入的特征图进行降采样,将每个池化窗口内的值取平均作为输出。而最大池化层则是取每个池化窗口内的最大值作为输出。这两种池化层都可以在三维数据上进行操作,其中的三个维度分别是通道数、高度和宽度。 在使用PyTorch中的三维池化层时,你可以使用torch.nn.MaxPool3d和torch.nn.AvgPool3d两个函数。这两个函数都接受相应的参数来定义池化窗口的大小、步幅和填充等。 请注意,上述信息的引用来源于中的内容,该文档介绍了全局池化的几种典型方式以及与PyTorch相关的函数调用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [PyTorch学习笔记(三)定义各种卷积池化线性激活层](https://download.csdn.net/download/weixin_38706100/13744115)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [轻松学Pytorch – 全局池化层详解](https://blog.csdn.net/qq_42722197/article/details/125093447)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值