深度学习pytorch——统计属性(持续更新)

news2024/11/24 18:36:37

矩阵范数 vs 向量范数

向量范数

1-范数:所有元素的绝对值之和。

2-范数:所有元素的平方之和,在开根号。

p-范数:所有元素的绝对值的p次方之和,再求其1/p次方。

 例:向量X=[2, 3, -5, -7] ,求向量的1-范数,2-范数。

a = torch.full([8],1.)
print("1-范数:",a.norm(1))    # tensor(8.)
print("2-范数:",a.norm(2))    # tensor(2.8284)

矩阵范数

1-范数:所有元素的绝对值之和。

2-范数:所有元素的平方之和,在开根号。

p-范数:所有元素的绝对值的p次方之和,再求其1/p次方。

b=tensor([[1., 1., 1., 1.], [1., 1., 1., 1.]])

c=tensor([[[1., 1.], [1., 1.]],  [[1., 1.], [1., 1.]]])

print("1-范数:",b.norm(1),c.norm(1))  # tensor(8.) tensor(8.)
print("2-范数:",b.norm(2),c.norm(2))  # tensor(2.8284) tensor(2.8284)

在不同维度上求范数就是消除这个维度,比如我现在有一个shape为[3, 2, 2]的张量,如果我要在第一维度上求范数,最后结果的shape就变成了[2, 2]了,实行的操作就是对本维度上的元素进行求范数处理。比如我已知如下一个张量:

如果我在第0维度上求变量就是按红框中的元素进行处理:

最后的结果就是:[[12., 15.],[18., 21.]]

如果我在第一维度进行求范数,就是对第一维度上的元素对应求范数,如下图所示:

最后的就是:[[ 2., 4.],[10., 12.],[18., 20.]]

同理在第2维度求范数,就是在第二维度元素之间进行求范数操作:

结果就是:[[ 1.,  5.], [ 9., 13.], [17., 21.]]

均值、累加、最小值、最大值、累乘

这一类方法的实现都是先打平为1维的之后再求,最基本的用法就是tensorname.fun_name():

min()       # 求最小值
max()       # 求最大值
mean()      # 求均值
prod()      # 求累乘
sum()      # 求累加
argmax()   # 求最大值的下标
argmin()   # 求最小值的下标

接下来讨论扩展的用法:

1、在特定维度上

a = tensor([[-1.5277,  0.3629, -1.2216, -1.3514, -0.7660,  0.0864, -0.9250, -0.6203,
          0.1785,  1.0856],
        [-0.3962,  0.6123,  0.3432, -2.0344, -0.5936,  0.9861,  1.2098, -1.0271,
          0.5962,  1.5628],
        [ 0.0584, -0.7316, -0.7060,  1.3894, -0.3185,  1.4347,  0.6946, -0.5441,
         -2.1643, -0.3881],
        [-0.2978,  0.7211,  1.1158, -1.6303, -0.7265, -0.1060, -1.2778, -0.0575,
         -0.3458, -0.0525]])

print(a.max(dim=1))      # 在第一维度上最大值,并给出最大值所在的位置 torch.return_types.max(values=tensor([1.0856, 1.5628, 1.4347, 1.1158]),indices=tensor([9, 9, 5, 2]))
print(a.argmax(dim=1))   # tensor([9, 9, 5, 2])
print(a.max(dim=1,keepdim=True))  # keepdim是保持原来的维度,就是原来a是一个二维的张量,现在a也是个二维的张量,只是size改变了
print(a.argmax(dim=1,keepdim=True))

top-k

a.topk(3,dim=1)               # 求出a张量在一维上,前三大的元素
a.topk(3,dim=1,largest=False) # 求最小的三个
a.kthvalue(8,dim=1)           # 在第一维度上第八大的

比较

给定a1=tensor([[-0.1915, -0.1166, -0.3212],
                       [-1.4488,  0.9648, -2.3803],
                       [ 0.2105,  1.6176,  0.2730]])

1、使用运算符

这种情况就是将张量a中的每一个元素与0进行比较,如果大于零赋值为True,小于0赋值为False,最后返回一个3*3的张量,其它比较运算符同理,代码示例:

print(a1>0)

2、使用gt()方法

大于0的返回True,小于0的返回False,最后返回的是一个3*3的张量,代码示例:

print(torch.gt(a1,0))

3、使用eq()和equal()方法

a=torch.ones(2,3)
b=torch.randn(2,3)
 # 判断a和b是否相等,是一个元素一个元素进行对比,如果对应元素相等,则将对应的位置赋值为True,不等赋值为False,最后返回一个2*3的张量
print(torch.eq(a,b))
# 是直接判断两个张量是否相等,如果不相等直接返回一个False,相等则返回一个True   
print(torch.equal(a,b)) 

cc​​​​​​​pytorch求范数函数——torch.norm - 慢行厚积 - 博客园 (cnblogs.com)icon-default.png?t=N7T8https://www.cnblogs.com/wanghui-garcia/p/11266298.html#:~:text=pytorch%E6%B1%82%E8%8C%83%E6%95%B0%E5%87%BD%E6%95%B0%E2%80%94%E2%80%94torch.norm%201%20dim%20%28int%EF%BC%8C2-tuple%EF%BC%8C2-list%EF%BC%8C%20optional%29%3A%20%E6%8C%87%E5%AE%9A%E8%AE%A1%E7%AE%97%E7%9A%84%E7%BB%B4%E5%BA%A6%E3%80%82%20%E5%A6%82%E6%9E%9C%E6%98%AF%E4%B8%80%E4%B8%AA%E6%95%B4%E6%95%B0%E5%80%BC%EF%BC%8C%E5%90%91%E9%87%8F%E8%8C%83%E6%95%B0%E5%B0%86%E8%A2%AB%E8%AE%A1%E7%AE%97%EF%BC%9B%E5%A6%82%E6%9E%9C%E6%98%AF%E4%B8%80%E4%B8%AA%E5%A4%A7%E5%B0%8F%E4%B8%BA2%E7%9A%84%E5%85%83%E7%BB%84%EF%BC%8C%E7%9F%A9%E9%98%B5%E8%8C%83%E6%95%B0%E5%B0%86%E8%A2%AB%E8%AE%A1%E7%AE%97%EF%BC%9B%E5%A6%82%E6%9E%9C%E4%B8%BANone%EF%BC%8C%E5%BD%93%E8%BE%93%E5%85%A5tensor%E5%8F%AA%E6%9C%89%E4%B8%A4%E7%BB%B4%E6%97%B6%E7%9F%A9%E9%98%B5%E8%AE%A1%E7%AE%97%E7%9F%A9%E9%98%B5%E8%8C%83%E6%95%B0%EF%BC%9B%E5%BD%93%E8%BE%93%E5%85%A5%E5%8F%AA%E6%9C%89%E4%B8%80%E7%BB%B4%E6%97%B6%E5%88%99%E8%AE%A1%E7%AE%97%E5%90%91%E9%87%8F%E8%8C%83%E6%95%B0%E3%80%82%20...,3%20out%EF%BC%88Tensor%2C%20optional%EF%BC%89%3Atensor%E7%9A%84%E8%BE%93%E5%87%BA%E3%80%82%20%E5%A6%82%E6%9E%9Cdim%3DNone%E6%88%96out%3DNone%2C%E5%88%99%E5%BF%BD%E7%95%A5%E8%AF%A5%E5%8F%82%E6%95%B0%E3%80%82%204%20dtype%EF%BC%88torch.dtype%EF%BC%8Coptional%EF%BC%89%EF%BC%9A%E6%8C%87%E5%AE%9A%E8%BF%94%E5%9B%9Etensor%E7%9A%84%E6%9C%9F%E6%9C%9B%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B%E3%80%82%20%E5%A6%82%E6%9E%9C%E6%8C%87%E5%AE%9A%E4%BA%86%E8%AF%A5%E5%8F%82%E6%95%B0%EF%BC%8C%E5%9C%A8%E6%89%A7%E8%A1%8C%E8%AF%A5%E6%93%8D%E4%BD%9C%E6%97%B6%E8%BE%93%E5%85%A5tensor%E5%B0%86%E8%A2%AB%E8%BD%AC%E6%8D%A2%E6%88%90%20%3Aattr%3A%E2%80%99dtype%E2%80%99

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

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

相关文章

深入理解Linux内核页表映射分页机制原理

深入理解Linux内核页表映射分页机制原理 前言 操作系统用于处理内存访问异常的入口操作系统的核心任务是对系统资源的管理,而重中之重的是对CPU和内存的管理。 为了使进程摆脱系统内存的制约,用户进程运行在虚拟内存之上,每个用户进程都拥…

静态网络配置

一、查看网络命令 1.命令行查看网络配置 1、查看ip\硬件设备-网卡 ifconfig -a ifconfig ens160 网卡名称 ip addr show ip addr show ens160 nmcli device show ens160 nmcli con up ens160 2、主机名称 hostname hostname hfj.huaxia.com 3、查看路由和网关 rou…

(C++20) jthread中stop_token的基础使用

(C20) jthread中stop_token的基础使用 文章目录 (C20) jthread中stop_token的基础使用C20 jthread使用方式循环判断条件变量condition_variable_any stop回调 std::stop_callbackEND C20 jthread std::jthread - cppreference.com std::stop_token - cppreference.com std::sto…

springboot3以及上版本引入RocketMQTemplate显示could not be found.

1. 问题所在 springboot3以及上版本引入RocketMQTemplate显示could not be found? 在springboot3时,直接通过依赖来注入RocketMQTemplate会报错,会显示没有这个对象。 这是因为在Springboot3以前的版本,自动装配是通过读取所有jar…

Docker容器化技术(docker-compose安装部署案例)

docker-compose编排工具 安装docker-compose [rootservice ~]# systemctl stop firewalld [rootservice ~]# setenforce 0 [rootservice ~]# systemctl start docker[rootservice ~]# wget https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-…

xinput1_3.dll丢失如何修复,xinput1_3.dll的安装修复教程分享

在Windows操作系统环境下,我们经常会遇到一些错误提示,其中之一就是“找不到xinput13.dll”。由于xinput1_3.dll是微软DirectX SDK的一部分,主要用于支持游戏手柄和其他外部设备的输入功能,缺失这一动态链接库文件可能导致某些依赖…

高顿咨询如何用国产CRM实现经验决策到数据决策的跨越

编者按 近日,Salesforce 移动应用在中国大陆苹果应用商店的下架,预示着今年CRM国产化替代即将迎来高潮。CRM作为距离业务最近的软件,被公认为是企业数字化转型、高质量发展的核心系统之一。“企业如何选择一款真正满足自身业务需求的本土化C…

邮件客户端 Thunderbird 简单配置

1. 基本情况介绍 原来使用的邮箱客户端是 Office 365 自带的 Outlook 365切换原因:新装电脑,发现原 Outlook 中的账号信息无法迁移,需要耗费大量时间手动配置邮箱使用的邮箱:微软 O365 邮箱、qq 邮箱、163 邮箱、公司私有邮箱 …

stable diffusion webui ubuntu 安装

1.git clone 下来 GitHub - AUTOMATIC1111/stable-diffusion-webui: Stable Diffusion web UIStable Diffusion web UI. Contribute to AUTOMATIC1111/stable-diffusion-webui development by creating an account on GitHub.https://github.com/AUTOMATIC1111/stable-diffus…

阻止默认行为 e.preventDefault()搭配passive:false才有效

正确情况 如果想阻止默认行为,那么 e.preventDefault()搭配passive:false才是正解 document.addEventListener(touchmove,(e)>{ e.preventDefault() console.log(123,123);},{passive:false}) 如果搭配 passive:false,则会报警告 e.preventDefault()搭配passive:true会报…

FREERTOS软件定时器

FreeRTOS 也提供了定时器功能,不过是软件定时器,软件定时器的精度肯定没有硬件定时器那么高,但是对于普通的精度要求不高的周期性处理的任务来说够了。当MCU的硬件定时器不够的时候就可以考虑使用 FreeRTOS 的软件定时器。 软件定时器允许设置…

HCIP【静态路由综合实验练习】

目录 实验要求: 实验过程: 一:首先设计实验 二:IP地址的划分(基于192.168.1.0/24) 在ensp中对路由器的相关命令进行配置: 三:配IP地址 (1)首先给所有设…

conda创建环境网络报错解决办法

文章目录 一、报错示例&#xff1a;二、解决办法&#xff1a;2.1 查看配置 conda config --show-sources2.2 修改文件 /home/XXXX/.condarc 一、报错示例&#xff1a; UnavailableInvalidChannel: HTTP 404 NOT FOUND for channel nvidia <http://mirrors.tuna.tsinghua.ed…

uniapp 开发微信小程序 出现启用组件按需注入问题如何解决

问题描述 在使用uniapp 开发微信小程序&#xff0c;进行上架发布时 代码质量栏 出现启用组件按需注入问题。 虽然现实代码上传成功&#xff0c;但是作为一个吹毛求疵的老猿人&#xff0c;肯定是无法容忍的。那么如何解决呢&#xff1f; 问题解决方案 在uniapp端&#xff0c…

[HackMyVM] Quick

kali:192.168.56.104 主机发现 arp-scan -l # arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:d2:e0:49, IPv4: 192.168.56.104 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.56.1 0a:00:27:00:00:05 (Un…

QT增加线程函数步骤流程

在使用线程的时候&#xff0c;不仅要关注线程开启的时机&#xff0c;同时还要关注线程安全退出&#xff0c;这样才能保证程序的健壮性&#xff0c;如果线程开启的较多&#xff0c;且开启关闭比较频繁&#xff0c;建议使用线程池来处理。开启线程有三种方式&#xff1a;第一种C的…

房屋租赁系统|基于JSP技术+ Mysql+Java+ B/S结构的房屋租赁系统设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java&#xff0c;ssm&#xff0c;springboot的平台设计与实现项目系统开发资源&#xff08;可…

Milvus 社区在线寻找「北辰使者」!!!

Milvus 社区的朋友们&#xff0c;大家好&#xff0c;欢迎来到 Milvus 北极星计划发布现场&#xff01; 熟悉我们的朋友都知道&#xff0c;Milvus 起源于一种学名叫“赤鸢”的鸟类&#xff0c;鸟类飞行的方向判断依靠星星、太阳、磁场&#xff0c;而北极星在人类历史上长期被视为…

24考研数学史上最难!25该怎么学?

25考研的千万不要被以前的真题卷给蒙蔽了双眼&#xff0c;现在考研的和以前真的不一样了 做过24年考研数学试卷的&#xff0c;应该都有一个感受&#xff0c;平时训练的好像都没用上。这是为啥啊。 其实是因为&#xff0c;现在的考研数学更加注重基础的考察&#xff0c;并且计…

sqllab第二十八关通关笔记(附带28a)

知识点&#xff1a; union select 整体过滤 union all select 替换where id(输入)空格 过滤了&#xff0c;使用%09代替 经过不断的测试&#xff0c;发现原始语句为 where id(输入) 构造payload:id1)and%091(1 成功回显出了相关的信息 好&#xff0c;尝试进行错误注入 构造…