当前位置: 首页 > news >正文

[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 nndef 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 torcha=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

http://www.lryc.cn/news/68053.html

相关文章:

  • Java进阶-字符串的使用
  • 接口自动化框架对比 | 质量工程
  • 谷歌浏览器network error解决方法
  • 自动化测试如何做?接口自动化测试框架必备的9个功能,测试老鸟总结...
  • ANR原理篇 - ANR原理总览
  • 新版Mamba体验超快的软件安装
  • LDAP配置与安装
  • 1-Linux环境安装JDK
  • 通胀数据回落助金价小幅回升
  • 正则表达式的基本语法以及技巧和示例
  • 蓝牙耳机怎么挑选?小编分享2023畅销蓝牙耳机排行榜
  • Linux快照太有趣了!
  • 【改进粒子群优化算法】自适应惯性权重粒子群算法(Matlab代码实现)
  • ROS 下 激光扫描仪 YDLidar-G4 使用
  • 智能边缘:数字化时代的关键战略之一
  • EasyRecovery16中文最新版电脑数据恢复软件下载使用教程
  • 什么是鉴权?这些postman鉴权方式你又知道多少?
  • 最新的经典mysql面试题及答案
  • 算法修炼之练气篇——练气十九层
  • 记录一次Windows7操作系统渗透测试
  • 承诺协议:定义 构造
  • 二、easyUI中的layout(布局)组件
  • MySQL---聚合函数、字符串函数、数学函数、日期函数
  • 边缘计算盒子有哪些?边缘计算应用场景
  • Linux内核(十四)Input 子系统详解 IV —— 配对的input设备与input事件处理器 input_register_handle
  • Vue2.x源码解析(三)
  • 全面理解守护进程的基础概念,以及如何创建一个守护进程(系列文章第三篇)
  • Leetcode刷题日志5.0
  • 母亲节:向世界上最伟大的母爱致敬
  • Springboot +Flowable,各种历史信息如何查询(二)