Pytorch-属性统计
引言
本篇介绍Pytorch属性统计的几种方式。
统计属性
求值或位置
- norm
- mean sum
- prod
- max, min, argmin, argmax
- kthvalue, topk
norm
norm 与 normalize
- norm指的是范数,并不是normalize。
- normalize是归一化,例如 batch_norm。
matrix norm 与 vector norn
要更好的理解范数,就要从函数、几何与矩阵的角度去理解。
我们都知道,函数与几何图形往往是有对应的关系,这个很好想象,特别是在三维以下的空间内,函数是几何图像的数学概括,而几何图像是函数的高度形象化,比如一个函数对应几何空间上若干点组成的图形。
但当函数与几何超出三维空间时,就难以获得较好的想象,于是就有了映射的概念,映射表达的就是一个集合通过某种关系转为另外一个集合。通常数学书是先说映射,然后再讨论函数,这是因为函数是映射的一个特例。
为了更好的在数学上表达这种映射关系,(这里特指线性关系)于是就引进了矩阵。这里的矩阵就是表征上述空间映射的线性关系。而通过向量来表示上述映射中所说的这个集合,而我们通常所说的基,就是这个集合的最一般关系。于是,我们可以这样理解,一个集合(向量),通过一种映射关系(矩阵),得到另外一个几何(另外一个向量)。
向量的范数,就是表示这个原有集合的大小。
矩阵的范数,就是表示这个变化过程的大小的一个度量。
总结起来一句话,范数(norm),是具有“长度”概念的函数。

推荐阅读 向量范数与矩阵范数, 机器学习下的各种norm到底是个什么东西?, 机器学习中的范数规则化之(一)L0、L1与L2范数.
在做 gradient clipping 的时候,需要查看weight 的 gradient norm 如果太大的话就需要做 gradient clipping(使用clamp)
norm-p
1-Norm就是所有元素的绝对值之和
2-Norm就是所有元素的平方和并开根号
不加dim参数,默认所有维度
从shape出发,加入dim后,这个dim就会消失(做Norm)
1 |
In[3]: a = torch.full([8],1) |
mean,sum,min,max,prod
max() 求最大的值
min()求最小的值mean()求平均值 mean = sum / sizeprod()累乘sum()求和argmax()返回最大值元素的索引argmin()返回最大值元素的索引argmax(dim=l)求l维中,最大元素的位置,这样的话这一维将消失。
note:以上这些,如果不加参数,会先打平,在计算,所以对于 argmax 和 argmin来说得到的是打平后的索引。
1 |
In[18]: a = torch.arange(8).view(2,4).float() # 假设我们生成一组 gradient |
dim,keepdim
- 使用max(dim=) 函数配上dim参数,可以很好的返回最大值与该值的位置
- argmax 其实是 max 的一部分(位置)
- keepdim=True 设置这个参数后,维度得以保留,与原来的维度是一样的。
1 |
In[33]: a # # 假设生成4张手写体数字照片的概率(发生过偏移) |
Top-k or k-th
topk
由于max只能找出一个最大,如果想找最大的几个就做不到了。
top-k 比max提供更多的信息,适用于特定的场合。
top-k 指的是返回概率最大的的 k 组数据以及位置
largest=False 求概率最小的 k 组
例如:对于一张照片,他的概率是[0.2, 0.3, 0.1, 0.2, 0.1, 0.1],使用topk(3) 会得到 概率最大的三个数[0.3, 0.2, 0.2] 以及位置[1, 0, 3]
1 |
In[33]: a |
kthvalue
- kthvalue(i, dim=j) 求 j 维上,第 i 小的元素以及位置。
- keepdim=True 会保持维度
1 |
In[36]: a.kthvalue(8,dim=1) # 求1维,第8小(第3大)( 0-9,第10小=第1大) |
compare
>, >=, <, <=, !=, ==- 进行比较后,返回的是一个 bytetensor,不再是floattensor,由于pytorch中所有的类型都是数值,没有True or False ,为了表达使用整型的0,1
- torch.eq(a,b) 判断每一个元素是否相等,返回 bytetensor
- torch.equal(a,b) 返回True or False
1 |
In[39]: a>0 |
下表是numpy与pytorch比较操作的方法,还是推荐 符号 > < ..
| Numpy | PyTorch |
|---|---|
| np.less | x.lt |
| np.less_equal | x.le |
| np.less_equal | x.le |
| np.less_equal | x.le |
| np.equal | x.eq |
| np.not_equal | x.ne |
Pytorch-属性统计的更多相关文章
- JS中对象按属性排序(冒泡排序)
在实际工作经常会出现这样一个问题:后台返回一个数组中有i个json数据,需要我们根据json中某一项进行数组的排序. 例如返回的数据结构大概是这样: { result:[ {id:,name:'中国银 ...
- 转: JSTL SQL标签库 使用
SQL标签库 JSTL提供了与数据库相关操作的标签,可以直接从页面上实现数据库操作的功能,在开发小型网站是可以很方便的实现数据的读取和操作.本章将详细介绍这些标签的功能和使用方法. SQL标签库从功能 ...
- 决策树算法(1)含java源代码
信息熵:变量的不确定性越大,熵越大.熵可用下面的公式描述:-(p1*logp1+p2*logp2+...+pn*logpn)pi表示事件i发生的概率ID3:GAIN(A)=INFO(D)-INFO_A ...
- static,静态关键字的详解
一,使用static声明属性 class Person{ // 定义Person类 String name ; // 定义name属性,暂时不封装 int age ; // 定义age属性,暂时不封装 ...
- JSEL 表达式
JSTL标签库的使用是为类弥补html表的不足,规范自定义标签的使用而诞生的.在告别modle1模式开发应用程序后,人们开始注重软件的分层设计,不希望在jsp页面中出现java逻辑代码,同时也由于自定 ...
- java实现的Trie树数据结构
近期在学习的时候,常常看到使用Trie树数据结构来解决这个问题.比方" 有一个1G大小的一个文件.里面每一行是一个词.词的大小不超过16字节,内存大小限制是1M. 返回频数最高的100个词. ...
- Wireshark网络抓包(四)——工具
一.基本信息统计工具 1)捕获文件属性(Summary) 1. File:了解抓包文件的各种属性,例如抓包文件的名称.路径.文件所含数据包的规模等信息 2. Time:获悉抓包的开始.结束和持续时间 ...
- 【读书笔记】【深入理解ES6】#3-函数
函数形参的默认值 ES6中的默认参数值 function makeRequest(url, timeout = 2000, callback = function() {}) { } 可以为任意参数指 ...
- python 要掌握面向对象,你得会做这些题吗?
1,面向对象三大特性,各有什么用处,说说你的理解. 继承:解决代码重用问题 多态:多态性,可以在不考虑对象类型的情况下而直接使用对象 封装:明确的区分内外,控制外部对隐藏属性的操作行为,隔离复杂度 2 ...
随机推荐
- Jenkins构建从github上克隆时,报Host key verification failed.
首先在本地通过CMD执行git clone xxxxx时,可以成功的通过免密(SSH_KEY)克隆下来代码,但是通过Jenkins克隆时,就报如下信息: Cloning into 'GitHub'.. ...
- SSH登录卡顿解决方案
在使用ssh远程登录Linux主机时,经常出现需要等待一段时间才能登录,甚至登录超时的情况 原因一:SSH服务器默认开启了DNS的查询功能:UseDNS=yes 当UseDNS选项处于开启状态时,客户 ...
- springboot 集成swagger2.x 后静态资源报404
package com.bgs360.configuration; import org.springframework.context.EnvironmentAware; import org.sp ...
- Ecplilse使用
0 注意版本 新版本对JDK的支持是有限的,如果Ecplise版本过高,而JDK版本低的话可能会不支持JDK 1.快捷键 右键-->source中可快速生成get set 重写方法 2.Deb ...
- closest(expr|object|element)
closest(expr|object|element) 概述 jQuery 1.3新增.从元素本身开始,逐级向上级元素匹配,并返回最先匹配的元素..大理石平台生产厂 closest会首先检查当前元素 ...
- Comet OJ - Contest #11 B 背包dp
Code: #include <bits/stdc++.h> #define N 1005 #define M 2000 #define setIO(s) freopen(s". ...
- 【luoguP1955 】[NOI2015]程序自动分析--普通并查集
题目描述 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3...代表程序中出现的变量,给定n个形如xi=xj或xi≠xj的变 ...
- Windows操作系统中的I/O(读/写 输入/输出)
导言 写一个Windows平台下的应用程序大多时候都是离不开读写文件,网络通信的. 比如一个服务应用程序来说,它可能从网络适配器接受用户的请求,对请求进行处理计算,最终将用户端所需的数据返回,中间可能 ...
- T2695 桶哥的问题——送桶 题解
校内测试 ------T2 看完这个题,就觉得和贪心那一块的任务调度很像,于是思路就是贪心啦! 蒟蒻的我,也就只能想到用贪心了,但是不知道怎么用qwq 这是我考试当时的思路,数据水骗了80分qwq: ...
- Python字典元素的增加删除和取出字典所有的键和值
一.增加一个或多个元素 d = {'a': 1} d.update(b=2) #也可以 d.update({‘b’: 2}) print(d) # {'a': 1, 'b': 2} d['e'] = ...