StochasticPooling 随机池化的PyTorch实现

随机池化(Stochastic Pooling) 前言 CNN中卷积完后有个步骤叫pooling, 在ICLR2013上,作者Zeiler提出了另一种pooling手段(最常见的就是mean-pooling和max-pooling),叫stochastic pooling。只需要对Feature Map中的元素按照其概率值大小随机选择,元素选中的概率与其数值大小正相关,并非如同max pooling那样直接选取最大值。这种随机池化操作不但最大化地保证了取值的Max,也部分确保不会所有的元素都被选取max值,从而提高了泛化能力。 ... 阅读详情

网上找了好久随机池化的Pytorch代码,都没有太合适的。就自己写了个不太优美的实现。若是在论文中使用该代码,请私信告知我用途。

from torch import nn
import torch
from torch.nn import functional as F

class StochasticPooling(nn.Module):
    def __init__(self):
        super().__init__()
        self.avg = nn.AvgPool2d(2)

    def forward(self, x):
        s = 4 * F.interpolate(F.avg_pool2d(x, 2), scale_factor=2, mode='nearest')
        p = x / s
        if self.training:
            b, c, h, w = p.shape
            o = torch.zeros(b, c, h // 2, w // 2)
            for i in range(h // 2):
                for j in range(w // 2):
                    pij = p[:, :, 2 * i:2 * i + 2, 2 * j:2 * j + 2].reshape(b, c, -1)
                    idx = torch.distributions.Multinomial(1, pij).sample().reshape(b, c, 2, 2)
                    o[:, :, i, j] = x[:, :, 2 * i:2 * i + 2, 2 * j:2 * j + 2][idx == 1].reshape(b, c)
            return o
        else:
            return 4 * F.avg_pool2d(p * x, 2)

需要注意的是,输入特征图的尺寸大小应该为2的整数倍,否则会报错,是由于下面这两行代码引起的

        s = 4 * F.interpolate(F.avg_pool2d(x, 2), scale_factor=2, mode='nearest')
        p = x / s
池化(Pooling)的种类与具体用法——基于Pytorch 池化的种类、原理与基于Pytorch的具体用法 阅读详情

相关推荐

4.pytorch学习:pool2d——2d池化

4.pytorch学习:pool2d——2d池化

wzfafabga的博客 1175

Stochastic pooling随机池化代码实现

Stochastic Pooling(随机池化) 随机池化Stochastic Pooling是Zeiler等人于ICLR2013提出的一种池化操作。随机池化的计算过程如下 先将方格中的元素同时除以它们的和sum,得到概率阵 按照概率随机选中方格 pooling得到的值就是方格位置的值 随机池化只需对特征图中的元素按照其概率值大小随机选择,即元素值大的被选中的概率也大,而不像max-pooling那样,永远只取那个最大值元素,这使得随机池化具有更强的泛化能力 import torch .

m0_51622811的博客 1411

PyTorch学习笔记(7)--神经网络:池化层

PyTorch学习笔记(7)–神经网络:池化层     本博文是PyTorch的学习笔记,第7次内容记录,主要介绍神经网络池化层的基本使用。 目录PyTorch学习笔记(7)--神经网络:池化层1.池化操作1.1什么是池化操作1.2池化操作的类型1.3池化操作的步骤2.池化层2.1池化层相关参数2.2最大池化应用实例1--处理矩阵2.3最大池化应用实例2--处理图片2.4池化层input和output尺寸信息3.学习小结 1.池化操作 1.1什么是池化操作     池化操作(Pooling)是CNN中非常常

weixin_43981621的博客 5587

随即池化的方法和意义

随机池化(StochasticPooling)可以看作在一个池化窗口内对特征图数值进行归一化,按照特征图归一化后的概率值大小随机采样选择,即元素值大的被选中的概率也大。

weixin_54279123的博客 1200

[cv] 池化(最大池化Maxpool、平均池化Averagepool、随机池化randpool)与反池化

池化的定义比较简单,最直观的作用便是降维,常见的池化有最大池化、平均池化和随机池化。 池化层不需要训练参数。 1、 三种池化:最大池化Maxpool、平均池化Average_pool、随机池化randpool 最大池化是对局部的值取最大;平均池化是对局部的值取平均;随机池化是根据概率对局部的值进行采样,采样结果便是池化结果。概念非常容易理解,其示意图如下所示: 其中随机池化 1/(1+3+4) 4/8 0 3/8得到 2、三种池化的意义 (1)最大池化可以获取局部信息,可以更好保留纹理上的特征。如果不用观

心宝的博客 1万+

0欧电阻、电感、磁珠单点接地时有什么区别?

0欧电阻、电感、磁珠单点接地时有什么区别? #电阻,#电感,#磁珠 一、0欧姆电阻 重点介绍:模拟地和数字地单点接地。 只要是地,最终都要接到一起,然后入大地。如果不接在一起就是“浮地”,存在压差,容易积累电荷,造成静电。地是参考0电位,所有电压都是参考地得出的,地的标准要一致,故各种地应短接在一起。 人们认为大地能够吸收所有电荷,始终维持稳定,是最终的地参考点。虽然有些板子没有接大地,但发电厂是接大地的,板子上的电源最终还是会返回发电厂入地。如果把模拟地和数字地大面积直...

FAguangdeer的博客 440

Pytorch学习——池化层

什么是池化层 池化层的来源 池化层是深度学习中常用组件之一,在当前大部分的神经网络结构中都会使用池化层。 池化层最早来源于LeNet一文,当时被称为SumSample。在AlexNet之后采用Pooling命名, 后续沿用了该命名。 池化层的作用 池化层模拟的人的视觉系统对数据进行降维,使用数据更高层次的特征维度进行学习。通过对特征实施池化,可达到如下效果: (1) 降低信息冗余。通过相关的池化操作,例如最大值池化,可用将局部无用的信息出去。 (2) 提升模型的尺寸不变性、旋转不变性: 对某

数据改变世界 1646

BAPI_OUTB_DELIVERY_CHANGE扩展指南:利用EXTENSION2与SMOD_V50B0001实现自定义字段更新

本文详细解析了如何利用BAPI_OUTB_DELIVERY_CHANGE的EXTENSION2参数与增强点SMOD_V50B0001,在不修改标准代码的前提下,安全、标准地更新SAP交货单的自定义字段。通过清晰的步骤指南和实战代码示例,帮助开发者掌握通过增强字段实现定制化业务需求的完整流程与调试技巧。

fanta的博客 447

卷积神经网络---池化层

在神经网络中,我们经常会看到池化层,常用的池化操作有四种:mean-pooling(平均池化),max-pooling(最大池化)、Stochastic-pooling(随机池化)和global average pooling(全局平均池化),池化层有一个很明显的作用:减少特征图大小,也就是可以减少计算量和所需显存。 ***mean-pooling(平均池化):***即对邻域内特征点只求平均 优缺点:能很好的保留背景,但容易使得图片变模糊 正向传播:邻域内取平均 反向传播:特征值根据领域大小被平均,然后传

weixin_45698190的博客 4426

git clone出现fatal: unable to access Failed to connect to github.com port 443: Timed out解决方案

本文主要介绍了git clone出现fatal: unable to access Failed to connect to github.com port 443: Timed out解决方案,希望能对使用git的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 23万+

交换机四种光互联技术:OIO、OBO、NPO与CPO

在过去几十年里,数据中心交换机主要依赖电信号通过铜线进行数据传输。然而,随着数据传输速率从100Gbps向400Gbps、800Gbps甚至1.6Tbps迈进,传统电互联(Electrical Input & Output, EIO)面临三大瓶颈:信号衰减、功耗激增和空间限制。例如,高速信号在长距离铜线传输中会产生严重的信号失真,迫使设计者加入数字信号处理器(DSP)来补偿信号衰减,这进一步推高了功耗和成本。此外,传统可插拔光模块的体积较大,限制了端口密度,难以满足现代数据中心对高带宽密度的需求。

网络技术联盟站 3064

存在感逐渐降低的池化层——Pooling Layer总结

文章目录1. Pooling的作用2. 各种不同的Pooling1. max pooling(最大池化层)2. average pooling (平均池化层)3. Global Average Pooling(全局平均池化层)4. mix pooling(混合池化层)5. stochastic pooling(随机池化)6. Local Importance-based pooling(局部重要性池化层)7. Generalized-mean Polling layer(GeM池化层)3. 使用卷积替代池.

Liu Feng's Blog 4964

【Python】秋招机考 —— 2025/9/17 华为 AI 方向

秋招机考,华为 AI,使用 Python 完成编程。

一杯水果茶!足矣~ 1156

机器学习/pytorch笔记 池化

随机池化对特征图中的元素按照其概率值大小随机选择,即元素值大的被选中的概率也大,而不像max-pooling那样,永远只取那个最大值元素,这使得随机池化具有。输入为(N,C,Lin​) or(C,Lin​),输出为(N,C,Lout​) or (C, L_{out}),其中Lout​=output_size.混合池化优于传统的最大池化和平均池化方法,并可以解决过拟合问题来提高分类精度。每个元素值表示对应位置处值的概率,现在只需要按照该概率来随机选一个。λ是0或1的随机值,表示选择使用最大池化或平均池化。

qq_40206371的博客 1804

torch.nn.rnn实现循环神经网络

------------------------------------nn.rnn模型实现。#------------------------------------模型实现。#-----------------------------------训练模型。#-----------------------------------训练模型。#--------------------------------读取数据。实现循环神经网络,并在至少一个数据集上进行实验,从训练时间、预测精度、...

matlab_python22的博客 2966

C#与倍福TwinCAT3通信实战:ADS协议封装与设备变量读写完整源码

倍福(Beckhoff)TwinCAT3 作为工业自动化领域主流的软PLC系统,其内置的ADS(Automation Device Specification)协议是实现上位机与TwinCAT3通信的核心标准。传统ADS通信开发存在门槛高(协议细节复杂)、稳定性差(缺乏统一异常处理)、复用性低(重复编码)等问题。本文基于 C# 技术栈,聚焦“协议封装标准化、变量读写易用化、通信稳定工业化”核心需求,提供一套完整的 ADS 协议封装方案与设备变量读写源码。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1983

stochastic pool

看到很多的对CNN的改造的文章中都是对pool做东西,最近看到一个随机池化,就好奇的去看了一下 可以参看这篇文章 Stochastic Pooling for Regularization of Deep Convolutional Neural Networks 在caffe中是支持最大池化,均值池化,随机池化的 在使用中常见的是mean-pooling和max-poo

Losteng的博客 2465

一文读懂 SAP BTP Application Router 的 Resource Files:从 xs-app.json 到本地开发的默认设置

本文详解SAP BTP中Application Router的资源文件配置与本地开发实践。核心包括:xs-app.json定义路由规则与安全策略,package.json声明依赖与启动脚本,resources/存放静态资源,default-services.json和local-destinations.json用于本地模拟云服务。文章通过真实案例展示如何配置静态资源直出、反向代理后端服务,并强调本地开发时的注意事项与常见问题解决路径。关键配置均提供示例代码,帮助开发者快速实现业务应用的部署与联调。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 172

pytorch中池化函数详解

PyTorch 提供了多种池化函数,用于对输入数据进行不同类型的池化操作,包含平均池化、最大池化、全局池化等

十年以上架构设计经验,专注于软件架构和人工智能领域,对机器视觉、NLP、音视频等领域都有涉猎 3607

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

深度学习基础--池化--Stochastic pooling(随机池化)

Stochastic pooling(随机池化) 计算过程   1)先将方格中的元素同时除以它们的和sum,得到概率矩阵;   2)按照概率随机选中方格;   3)pooling得到的值就是方格位置的值。   使用stochastic pooling时(即test过程),其推理过程也很简单,对矩阵区域求加权平均即可。   在反向传播求导时,只需保留前向传播已经记录被选中节点的位置的值,其它值都为0...

wydbyxr的博客 6034

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

PyTorch中的池化

池化

Mark_Australia的博客 985

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

池化方法

池化方法 池化操作是卷积神经网络中的一个特殊的操作,主要就是在一定的区域内提出该区域的关键信息(一个亚采样过程)。其操作往往出现在卷积层之后,它能起到减少卷积层输出的特征量数目的作用,从而能减少模型参数同时能改善过拟合现象。池化操作通过池化模板和步长两个关键变量构成。模板描述了提取信息区域的大小(size_PL),一般是一个方形窗口;步长(stride)描述了窗口在卷积层输出特征图上的移动步长,...

吕爽 1万+

Pytorch学习记录(6)池化层的使用

池化操作(Pooling)是CNN中非常常见的一种操作,Pooling层是模仿人的视觉系统对数据进行降维,池化操作通常也叫做子采样(Subsampling)或降采样(Downsampling),在构建卷积神经网络时,往往会用在卷积层之后,通过池化来降低卷积层输出的特征维度,有效减少网络参数的同时还可以防止过拟合现象。主要功能有以下几点:抑制噪声,降低信息冗余。提升模型的尺度不变性、旋转不变形。降低模型计算量。防止过拟合

GAKKI_Husband的博客 744

随机采样池化--S3Pool: Pooling with Stochastic Spatial Sampling

S3Pool: Pooling with Stochastic Spatial Sampling CVPR2017 https://github.com/Shuangfei/s3pool本文将常规池化看作两个步骤: 1)以步长为1在特征图上滑动池化窗口,尺寸大小基本保持不变, leaves the spatial resolution intact 2)以一种 uniform 和 deter

AI小作坊 的博客 6631

如何用tensorflow和keras实现随机池化?

# stochastic_pooling_2d.py import numpy as np import math from keras.engine.topology import Layer from keras.layers import InputSpec from keras import backend as K from keras.utils import conv_utils ...

weixin_43509263的博客 1100

maxpooling主要有两大作用

maxpooling主要有两大作用 invariance(不变性),这种不变性包括translation(平移),rotation(旋转),scale(尺度) 保留主要的特征同时减少参数(降维,效果类似PCA)和计算量,防止过拟合,提高模型泛化能力 (1) translation invariance: 这里举一个直观的例子(数字识别),假设有一个16x16的图片,里面有个数字1,我们需要识别出来,这个数字1可能写的偏左一点(图1),这个数字1可能偏右一点(图2),图1到图2相当于向右平移了一个单位,但是

timetime88的博客 860
上一篇: 2021-05-31杂记
下一篇: AID数据集的均值和方差
hellyou
博客等级 码龄9年 7粉丝 35原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值