pytorch 今日小知识2——F.avg_pool2d、clamp

今天看到
def gem(self, ipts):return F.avg_pool2d(ipts.clamp(min=self.eps).pow(self.p), (1, ipts.size(-1))).pow(1. / self.p)

这个函数中的F.avg_pool2d 不是很理解就查了一下

  1. ipts.clamp(1.0e-6):
    这个操作将ipts中的每个元素限制在[1.0e-6, +inf)的范围内。也就是说,任何小于1.0e-6(一个非常小的正数)的值都会被替换为1.0e-6,而大于或等于1.0e-6的值则保持不变。这样做通常是为了避免数值不稳定问题,尤其是在进行对数运算、除法运算或幂运算时。

  2. .pow(6.5):
    ipts(经过clamp操作后)中的每个元素提升到6.5的幂。

  3. F.avg_pool2d(..., (1, ipts.size(-1))):
    使用F.avg_pool2d函数对张量进行平均池化操作。这里有两个关键的参数:

    • 第一个参数是输入张量,即经过clamp和pow操作后的ipts
    • 第二个参数(1, ipts.size(-1))定义了池化窗口的大小。这里,池化窗口的高度为1(即在高度上不进行池化),而宽度为ipts的最后一个维度的大小(即ipts.size(-1))。这意味着池化操作将在最后一个维度上进行,并且沿着这个维度取平均值。
  4. .pow(1. / 6.5):
    将池化后的结果张量中的每个元素取6.5的倒数次幂。这实际上是前面.pow(6.5)操作的逆操作,用于恢复原始数据的某种形式

import torch
import torch.nn.functional as F

F.avg_pool2d()数据是四维输入
input维度: (batch_size,channels,height,width)
kenerl维度:(二维:表示width的跨度)channel和输入的channle一致,如果数据是三维,则channel为1.(如果只写一个数n,kenerl=(n,n))

stride默认和kenerl一致,这是个二维的,所以在height和width上均和kenerl一致,越界同样丢弃。跟cnn卷积一致

在H和W维度求平均

input=torch.randn(10,3,4,4)
m=F.avg_pool2d(input,(4,4))
print(m.size())torch.Size([10, 3, 1, 1])
input = torch.tensor([[1,1,1,1,1],[1,1,1,1,1],[0,0,0,1,1],[1,1,1,1,1],[1,1,1,1,1]]).unsqueeze(0).float()
print(input.size())
print(input)
m = F.avg_pool2d(input,kernel_size=(4,4))
m
torch.Size([1, 5, 5])
tensor([[[1., 1., 1., 1., 1.],[1., 1., 1., 1., 1.],[0., 0., 0., 1., 1.],[1., 1., 1., 1., 1.],[1., 1., 1., 1., 1.]]])
tensor([[[0.8125]]])input = torch.tensor([[1,1,1,1,1],[1,1,1,1,1],[0,0,0,1,1],[1,1,1,1,1],[1,1,1,1,1]]).unsqueeze(0).float()
print(input.size())
print(input)
m = F.avg_pool2d(input,kernel_size=(4,4),stride=1)
m
torch.Size([1, 5, 5])
tensor([[[1., 1., 1., 1., 1.],[1., 1., 1., 1., 1.],[0., 0., 0., 1., 1.],[1., 1., 1., 1., 1.],[1., 1., 1., 1., 1.]]])
tensor([[[0.8125, 0.8750],[0.8125, 0.8750]]])

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/1577.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python】——字典

🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL&#xff1a…

【python】一文读懂python函数

【python】一文读懂python函数 文章目录 【python】一文读懂python函数(一)简单入门理解函数(二)函数的基本结构:(三)函数的默认值(四)可变参数(五)基于字典的可变参数(**可变参数)(六)函数中变量的作用域(七)lambda函数(八) 过滤函数filter()在Python中,…

谷歌Gemini 1.5 Pro国内怎么用?国内镜像来了

长期以来,许多人向我咨询是否存在一个稳定而高效的全球AI大模型测试平台,这个平台需要不仅真实可靠,而且能够提供稳定和快速的服务,不会频繁出现故障或响应缓慢的问题。然而,当我发现了AskManyAI时,我被其所…

蛋白质治病突变的计算方法(三)

3 用于识别致病突变的特征 文献中使用了几种特征来识别蛋白质中的致病突变。它们大致分为三类:(1)序列,(2)结构和(3)网络,以及它们的组合。图1说明了这三组中的一些重要属性。 图1 用于识别致病突变和热点的重要特征。 基于氨基酸序列的特性…

go下载依赖时超时timeout

go下载依赖时超时timeout go: module k8s.io/component-base/logs: Get “https://proxy.golang.org/k8s.io/component-base/logs/v/list”: dial tcp 172.217.160.113:443: i/o timeout 解决办法如下,运行命令: go env -w GO111MODULEon go env -w GO…

李宏毅2022机器学习/深度学习 个人笔记(3)

本系列用于推导、记录该系列视频中本人不熟悉、或认为有价值的知识点 本篇记录代码效果不佳时应该怎么做 如下图所示: 接下来探讨,当optimization不佳的时候,如何判断是遇到了鞍点还是遇到了局部最小值点?可以通过多元函数的泰勒…

【大语言模型+Lora微调】10条对话微调Qwen-7B-Chat并进行推理 (聊天助手)

代码:https://github.com/QwenLM/Qwen/tree/main 国内源安装说明:https://modelscope.cn/models/qwen/Qwen-7B-Chat/summary 通义千问:https://tongyi.aliyun.com/qianwen 一、环境搭建 下载源码 git clone https://github.com/QwenLM/Qwen…

是用computed获取vuex数据后,修改数据页面不响应的问题

问题描述: 代码里使用computed获取mapGetters的数据后,直接在页面使用,在methods中更新数据后,控制台打印数据已经更改,但是页面上的数据没有同步更改和响应。 分析: 1.computed是计算属性,所有…

【Linux 进程间通信】管道(三)

文章目录 1.管道的五种特征2.管道的四种情况 1.管道的五种特征 ①🍎匿名管道只能用于有血缘关系的进程之间进行通信(爷孙进程之间可以进行通信),常用于父子之间进行通信; ②🍎管道内部,自带进…

【数据结构】时间复杂度的例题

🎁个人主页:我们的五年 🔍系列专栏:数据结构 🌷追光的人,终会万丈光芒 前言: 这篇文章是关于时间复杂度的一些例题,关于时间复杂度和空间复杂度和算法的计算效率的基本知识点我放在…

Linux之C编程入门

目录 第1关:第一个C程序 任务描述 相关知识 编译C程序 编程要求 答案及其步骤: 第2关:Linux编译C程序 任务描述 相关知识 gcc编译器使用方法 编程要求 答案及其步骤: 第3关:Linux之静态库编写 任务描述 相关知识 生成…

Leetcode 3122. Minimum Number of Operations to Satisfy Conditions

Leetcode 3122. Minimum Number of Operations to Satisfy Conditions 1. 解题思路2. 代码实现 题目链接:3122. Minimum Number of Operations to Satisfy Conditions 1. 解题思路 这一题就是一个动态规划的思路,我们只需要对每一列取0到9的情况各自进…

玩转云计算:教你在Akamai Linode上构建IT架构—确定需求

时至今日,选择以云计算方式来运维业务,已经成为大部分情况下的最优选。那么如果要从零开始开发一个新应用,并依托云平台来设计、开发、部害和远维,具体该从何处下手?这一系列文章将介绍如何基于Akamai Linode平台实现这…

Java最短路径问题知识点(含面试大厂题和源码)

最短路径问题是图论中的一个经典问题,它寻找图中两点之间的最短路径。这个问题在现实世界中有广泛的应用,比如导航系统中的路线规划、网络中的信息传输等。解决最短路径问题有多种算法,其中最著名的包括: 贝尔曼-福特算法&#xf…

【深度学习】Attention、Self-Attention、Multi-Head Attention

一、Attention 在CV领域,注意力机制通常分为通道注意力和空间注意力或者两者结合。 一张图像经backbone得到的特征通常包括多个通道,每个通道是一个像素矩阵,每个通道对任务的贡献不尽相同,单个通道的特征图中每个像素对任务的贡…

2W 3KVDC 隔离双输出 DC/DC 电源模块——TPD-2W 系列

TPD-2W系列提供双独立输出电压,并且两组电压可以不同,这样就节省一个电源模块,特别适合一块板上有多个不同电压要求的设计,而外形尺寸和TPA一样,工作温度范围广-40℃到 105℃。

K8s: 在Pod里面对容器进行配额管理和相关原理

Pod里面对容器进行配额管理 在生产环境中,内存占用通常很大,如果里面有死循环,会导致内存和cpu过大导致影响其他pod运行资源 需要让资源在受控的环境下运行,一般都是加上 resources limits 的配置才能达到最佳实践 默认cpu是0.5…

LabVIEW连接postgre sql

一、安装ODBC 下载对应postgreSQL版本的ODBC 下载网址:http://ftp.postgresql.org/pub/odbc/versions/msi/ 下载好后默认安装就行,这样在ODBC数据源中才能找到。 二、配置系统DSN 实现要新建好要用的数据库,这里的用户名:postg…

new[]与delete[]

(要理解之前关于new,delete的一些概念,看​​​​​​ CSDN) 引子: 相比new,new[]不仅仅是个数的增加,还有int大小记录空间的创建, 下图中错误的用模拟多个new来替代new[],释放步…

tcp网络编程(基础)

目录 一.编程前的一些基础 二.tcp网络编程 1.一个服务器只能有一个客户端连接(下面代码) Socket.hpp TcpServer.hpp TcpServerMain.cc TcpClientMain.cc 2.一个服务器可以有多个客户端连接(多线程) 看这篇文章前&#xff0c…