torch.nn.functional.normalize参数说明

news2024/11/18 7:26:42

torch.nn.functional.normalize参数说明

  • 函数定义
  • 参数及功能
  • 官方说明
  • 三维数据实例解释
    • 参数dim=0
    • 参数dim=1
    • 参数dim=2
    • 参数dim=-1
  • 参考博文及感谢

函数定义

torch.nn.functional.normalize(input, p=2.0, dim=1, eps=1e-12, out=None)
# type: (Tensor, float, int, float, Optional[Tensor]) -> Tensor

公式为
v max ⁡ ( ∥ v ∥ p , ϵ ) \frac{v}{\max(\lVert v \rVert_p, \epsilon)} max(∥vp,ϵ)v

参数及功能

F.normalize(data, p=2/1, dim=0/1/-1) 将某一个维度除以那个维度对应的范数(默认是2范数)
        input:输入的数据(tensor)
        p:L2/L1_norm运算,(默认是2范数)
        dim:0表示按列操作,则每列都是除以该列下平方和的开方;1表示按行操作,则每行都是除以该行下所有元素平方和的开方,-1表示按行
        eps:防止分母为0

功能:将某一个维度除以那个维度对应的范数(默认是2范数)。

官方说明

在这里插入图片描述

三维数据实例解释

参数dim=0

import torch
import torch.nn.functional as F

a = torch.tensor([[[0.0861, 0.1087, 0.0518, 0.3551],
                   [0.8067, 0.4128, 0.0592, 0.2884],
                   [0.1072, 0.4785, 0.8890, 0.3565]]])
print(a)
print("=============================================")
c = F.normalize(a, dim=0)
print(c)

结果为

tensor([[[0.0861, 0.1087, 0.0518, 0.3551],
         [0.8067, 0.4128, 0.0592, 0.2884],
         [0.1072, 0.4785, 0.8890, 0.3565]]])
=============================================
tensor([[[1., 1., 1., 1.],
         [1., 1., 1., 1.],
         [1., 1., 1., 1.]]])

这里作用的是维度0;维度0上只有1个通道,因此归一化之后全为1,即
在这里插入图片描述

参数dim=1

a = torch.tensor([[[0.0861, 0.1087, 0.0518, 0.3551],
                   [0.8067, 0.4128, 0.0592, 0.2884],
                   [0.1072, 0.4785, 0.8890, 0.3565]]])
print(a)
print("=============================================")
c = F.normalize(a, dim=1)
print(c)

结果为

tensor([[[0.0861, 0.1087, 0.0518, 0.3551],
         [0.8067, 0.4128, 0.0592, 0.2884],
         [0.1072, 0.4785, 0.8890, 0.3565]]])
=============================================
tensor([[[0.1052, 0.1695, 0.0580, 0.6123],
         [0.9858, 0.6438, 0.0663, 0.4973],
         [0.1310, 0.7462, 0.9961, 0.6147]]])

代码中针对维度1进行归一化。维度1有3个通道,具体的计算细节为

0.1052 = 0.0861 0.086 1 2 + 0.806 7 2 + 0.107 2 2 0.1052=\frac{0.0861}{\sqrt{0.0861^2+0.8067^2+0.1072^2}} 0.1052=0.08612+0.80672+0.10722 0.0861
0.1695 = 0.1087 0.108 7 2 + 0.412 8 2 + 0.478 5 2 0.1695=\frac{0.1087}{\sqrt{0.1087^2+0.4128^2+0.4785^2}} 0.1695=0.10872+0.41282+0.47852 0.1087
0.0580 = 0.0518 0.051 8 2 + 0.059 2 2 + 0.889 0 2 0.0580=\frac{0.0518}{\sqrt{0.0518^2+0.0592^2+0.8890^2}} 0.0580=0.05182+0.05922+0.88902 0.0518
0.6123 = 0.3551 0.355 1 2 + 0.288 4 2 + 0.356 5 2 0.6123=\frac{0.3551}{\sqrt{0.3551^2+0.2884^2+0.3565^2}} 0.6123=0.35512+0.28842+0.35652 0.3551

参数dim=2

a = torch.tensor([[[0.0861, 0.1087, 0.0518, 0.3551],
                   [0.8067, 0.4128, 0.0592, 0.2884],
                   [0.1072, 0.4785, 0.8890, 0.3565]]])
print(a)
print("=============================================")
c = F.normalize(a, dim=2)
print(c)

结果为

tensor([[[0.0861, 0.1087, 0.0518, 0.3551],
         [0.8067, 0.4128, 0.0592, 0.2884],
         [0.1072, 0.4785, 0.8890, 0.3565]]])
=============================================
tensor([[[0.2237, 0.2825, 0.1347, 0.9230],
         [0.8467, 0.4332, 0.0621, 0.3027],
         [0.0996, 0.4447, 0.8262, 0.3313]]])

这里作用的是维度2,可以认为维度2有4个通道,计算细节为:
在这里插入图片描述

参数dim=-1

与dim=2结果一致,相当于看做逆序索引

参考博文及感谢

部分内容参考以下链接,这里表示感谢 Thanks♪(・ω・)ノ
参考博文1 官方文档
https://pytorch.org/docs/stable/generated/torch.nn.functional.normalize.html
参考博文2 Pytorch中关于F.normalize计算理解
https://www.jb51.net/article/274086.htm
参考博文3 【Pytorch】F.normalize计算理解
https://blog.csdn.net/lj2048/article/details/118115681

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

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

相关文章

chatgpt赋能Python-python3_9怎么安装jieba库

Python3.9怎么安装jieba库 随着大数据时代的到来,中文分词是一个愈发重要的问题。而jieba是一个基于Python的中文分词工具包,具有高速、易用、解耦的特点,广受开发者的青睐。本文将介绍如何在Python3.9环境下安装jieba库。 什么是jieba库 …

微服务: Seata AT 分布式事务以及配置方式(上篇)

目录 前言简介: 1. 安装seata-at -> 1.1 先看版本, 全局搜一下 -> 1.2 版本说明 alibaba/spring-cloud-alibaba Wiki -> 1.3 选择seata-at版本 -> 1.4 下载后按照下图进行创建文件 ---> 1.4.0 先在nacos创建命名空间seata ---> 1.4.1 registry.conf…

Chrome 的骑士盾,谷歌 Security Princess 访谈

童话故事里的公主都有一种需要被保护的感觉,就像马里奥大叔在这么多年来都要在库巴手上拯救出碧姬公主一样。不过在谷歌的这位 Security Princess 却手执盾牌,守护着大家的 Chrome 浏览器免受恶意程序攻击。小编这次就乘着世界网络安全日的机会&#xff…

微信小程序-生命周期

为什么今天突然总结一下微信小程序的生命周期呢?因为突然发现这个知识点忘得有点干净。所以今天就看一下微信小程序的生命周期是怎么个事吧! 目录 生命周期 生命周期的分类 生命周期函数的作用 生命周期函数的分类 生命周期是指一个对象从创建->…

Docker -- m1芯片 macOS 安装 nginx - 03

m1芯片 macOS 安装 nginx 一、安装docker提前准备二、下载nginx相关镜像三、运行相关容器四、运行并验证 一、安装docker提前准备 查看 d o c k e r \color{#FF7D00}{docker} docker版本:在 c o m m e n t \color{#FF7D00}{comment} comment 中输入 docker -version…

小红薯笔记/帖子采集工具

小红书【笔记/帖子】采集工具 链接: http://106.53.68.168:9920/xhs-keyword-spider 规则及操作 (1)规则: 按照关键词抓取规则:标题中或者正文内容中包含该关键词都能被抓取下来。多种搜索模式可选,分别…

字节跳动10年经验,10W字228道软件测试经典面试题总结(附答案)

前言 最近有很多粉丝问我,有什么方法能够快速提升自己,通过阿里、腾讯、字节跳动、京东等互联网大厂的面试,我觉得短时间提升自己最快的手段就是背面试题,最近总结了软件测试常用的面试题,分享给大家,希望…

【mpvue】小程序开发入门

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍mpvue的使用。 学其所用,用其所学。——梁启超 欢迎来到我的博客,一起学习知识,共同进步。 🥞喜欢的朋友可以关注一下,下次更…

Atlassian攻略:如何将Jira和Confluence的数据平稳迁移上云

迁移到云端相当于一次专业的冒险旅⾏。过程中肯定会经历一些颠簸,但只要有正确的心态和充分的准备,您就能完美应对。最终的目的地一定会让你感觉值得。当Atlassian调查了最近迁移的客户时,有89%的客户表示在他们不到6个月的时间内就意识到了迁…

chatgpt赋能Python-python3_9_7怎么换行

Python3.9.7是一款强大的编程语言,它具有许多优点,例如易于学习和使用,适用于不同的应用程序,以及具有丰富的第三方库支持。但是,许多人可能会面临一个问题:如何在Python3.9.7中正确换行? 在本…

一篇文章告诉你如何入门黑客技术

01 准备 当你决定做要开始学习一个新的领域时,你需要考虑以下几个问题。 1)要考虑清楚你为何要学这个 说白了就是你的动机是什么,如果你的动机是不可持续的,例如盗个QQ(甚至是挖个系统0Day漏洞)&#x…

【数据分享】2020年全国10m分辨率土地覆盖数据

土地覆盖数据是我们在各项研究中都非常常用的数据!之前我们分享过多种精度的土地覆盖数据,包括:两种30米精度的土地覆盖数据——2000\2010\2022年的GlobeLand地表土地覆盖数据和1990-2021年的CLDC土地覆盖数据;此外还分享了两种10…

IDEA spring boot maven 项目搭建

1.打开idea后选择file->new->project 2.选择maven,选择jdk,并且下一步next。 3.选择项目存放位置以及项目名称。 至此一个maven项目就建好了。

第三十三章 使用Redux管理状态

Redux(全称为Redux)是一个基于状态管理的JavaScript库,它可以用来构建可重用的、可维护的代码。Redux主要用于处理复杂的应用程序中的状态管理,它能够自动地处理应用程序中的更改,并在需要时更新视图。 Redux使用一种被…

Oracle MRP补丁

参考文档: Oracle Database Oracle Database Patch Maintenance, Release 19c and Later Releases Introducing Monthly Recommended Patches (MRPs) and FAQ (Doc ID 2898740.1) - Sunsetting of 19c RURs and FAQ (Doc ID 2898381.1). Primary Note for D…

Sui基金会联合Tencent Cloud和Numen于5月24日在香港举办生态交流会

Sui生态工作坊及交流会将于5月24日在香港举行,本次活动旨在提升Web3产业对Sui生态的认识,并为生态中的开发者搭建交流的平台,促进团队之间的合作。在本次的交流会中,您还可以了解到Sui基金会对Web3生态发展愿景不遗余力的支持、Te…

深度学习课程:手写体识别示例代码和详细注释

Pytorch 的快速入门,参见 通过两个神经元的极简模型,清晰透视 Pytorch 工作原理。本文结合手写体识别项目,给出一个具体示例和直接关联代码的解释。 1. 代码 下面代码展示了完整的手写体识别的 Python 程序代码。代码中有少量注释。在本文后…

工业相机的Pixel Binning和Pixel Skipping

一般图像传感器的不同分辨率都对应着不同的帧率。如果想要提高帧率,就要考虑是否需要缩小视野。若不希望视野缩小,就需要减小分辨率(resolution)。常用的减少分辨率的两种采样方式是:Skipping和Binning。 什么是Binni…

【复盘】聊一下如何高效学习

对于大多数的人来说,从毕业之后其实大多数的可能就不会在认真学习专业和专业外的课程,但是对于程序员这个大群体来说,想要提高自己的技术,需要不断的提高自己的技术能力以及来提高薪资水平,那么有没有相关的高效学习的…

四种不同机器学习方法(线性回归模型,K近邻回归模型,决策树回归模型,随机森林回归模型)对光伏发电预测

1.数据集介绍(可以看短期光伏发电量短期预测(Python代码,基于LSTM模型)_深度学习的奋斗者的博客-CSDN博客) 两篇文章用的是同一个数据集,不同的的是本篇多了温度特征 这些是温度数据集中的列名&#xff1…