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]]])
相关推荐
董厂长2 小时前
langchain :记忆组件混淆概念澄清 & 创建Conversational ReAct后显示指定 记忆组件
人工智能·深度学习·langchain·llm
G皮T5 小时前
【人工智能】ChatGPT、DeepSeek-R1、DeepSeek-V3 辨析
人工智能·chatgpt·llm·大语言模型·deepseek·deepseek-v3·deepseek-r1
九年义务漏网鲨鱼5 小时前
【大模型学习 | MINIGPT-4原理】
人工智能·深度学习·学习·语言模型·多模态
元宇宙时间6 小时前
Playfun即将开启大型Web3线上活动,打造沉浸式GameFi体验生态
人工智能·去中心化·区块链
开发者工具分享6 小时前
文本音频违规识别工具排行榜(12选)
人工智能·音视频
产品经理独孤虾6 小时前
人工智能大模型如何助力电商产品经理打造高效的商品工业属性画像
人工智能·机器学习·ai·大模型·产品经理·商品画像·商品工业属性
老任与码6 小时前
Spring AI Alibaba(1)——基本使用
java·人工智能·后端·springaialibaba
蹦蹦跳跳真可爱5896 小时前
Python----OpenCV(图像増强——高通滤波(索贝尔算子、沙尔算子、拉普拉斯算子),图像浮雕与特效处理)
人工智能·python·opencv·计算机视觉
雷羿 LexChien7 小时前
从 Prompt 管理到人格稳定:探索 Cursor AI 编辑器如何赋能 Prompt 工程与人格风格设计(上)
人工智能·python·llm·编辑器·prompt
两棵雪松7 小时前
如何通过向量化技术比较两段文本是否相似?
人工智能