Pytorch-数学运算
引言
本篇介绍tensor的数学运算。
基本运算
- add/minus/multiply/divide
- matmul
- pow
- sqrt/rsqrt
- round
基础运算
- 可以使用 + - * / 推荐
- 也可以使用 torch.add, mul, sub, div
1 |
In[3]: a = torch.rand(3,4) |
torch.all()判断每个位置的元素是否相同是否存在为0的元素
1
2
3
4In[21]: torch.all(torch.ByteTensor([1,1,1,1]))
Out[21]: tensor(1, dtype=torch.uint8)
In[22]: torch.all(torch.ByteTensor([1,1,1,0]))
Out[22]: tensor(0, dtype=torch.uint8)
matmul
- matmul 表示 matrix mul
*表示的是element-wisetorch.mm(a,b)只能计算2D 不推荐torch.matmul(a,b)可以计算更高维度,落脚点依旧在行与列。 推荐@是matmul 的重载形式
1 |
In[24]: a = 3*torch.ones(2,2) |
例子
线性层的计算 : x @ w.t() + b
- x是4张照片且已经打平了 (4, 784)
- 我们希望 (4, 784) —> (4, 512)
- 这样的话w因该是 (784, 512)
- 但由于pytorch默认 第一个维度是 channel-out(目标), 第二个维度是 channel-in (输入) , 所以需要用一个转置
note:.t() 只适合2D,高维用transpose
1 |
In[31]: x = torch.rand(4,784) |
神经网络 -> 矩阵运算 -> tensor flow
2维以上的tensor matmul
- 对于2维以上的matrix multiply ,
torch.mm(a,b)就不行了。 - 运算规则:只取最后的两维做矩阵乘法
- 对于 [b, c, h, w] 来说,b,c 是不变的,图片的大小在改变;并且也并行的计算出了b,c。也就是支持多个矩阵并行相乘。
- 对于不同的size,如果符合broadcast,先执行broadcast,在进行矩阵相乘。
1 |
In[3]: a = torch.rand(4,3,28,64) |
power
- pow(a, n) a的n次方
**也表示次方(可以是2,0.5,0.25,3) 推荐- sqrt() 表示 square root 平方根
- rsqrt() 表示平方根的倒数
1 |
In[11]: a = torch.full([2,2],3) |
Exp log
- exp(n) 表示:e的n次方
- log(a) 表示:ln(a)
- log2() 、 log10()
1 |
In[18]: a = torch.exp(torch.ones(2,2)) |
Approximation
近似相关1
- floor、ceil 向下取整、向上取整
- round 4舍5入
- trunc、frac 裁剪
1 |
In[24]: a = torch.tensor(3.14) |
clamp
近似相关2 (用的更多一些)
- gradient clipping 梯度裁剪
- (min) 小于min的都变为某某值
- (min, max) 不在这个区间的都变为某某值
- 梯度爆炸:一般来说,当梯度达到100左右的时候,就已经很大了,正常在10左右,通过打印梯度的模来查看
w.grad.norm(2) - 对于w的限制叫做weight clipping,对于weight gradient clipping称为 gradient clipping。
1 |
In[30]: grad = torch.rand(2,3)*15 |
Pytorch-数学运算的更多相关文章
- pytorch数学运算与统计属性入门(非常易懂)
pytorch数学运算与统计属性入门1.Broadcasting (维度)自动扩展,具有以下两个重要特征:(1)expand (2)without copying data重点的核心实现功能是:(1) ...
- Java学习笔记 06 数字格式化及数学运算
一.数字格式化 DecimalFormat类 >>DecimalFormat是NumberFormat的子类,用于格式化十进制数,可以将一些数字格式化为整数.浮点数.百分数等.通过使用该类 ...
- 从零开始学习Node.js例子四 多页面实现数学运算 续二(client端和server端)
1.server端 支持数学运算的服务器,服务器的返回结果用json对象表示. math-server.js //通过监听3000端口使其作为Math Wizard的后台程序 var math = r ...
- Linux shell 变量 数学 运算
Abstract : 1) Linux shell 中使用 let , [ ] ,(( )) 三种运算符操作 shell 变量进行简单的基本运算: 2)Linux shell 中使用 expr 与 ...
- 认真学习shell的第一天-数学运算
shell中的数学运算有三种方式: (1)let,用let的时候,变量名称前不用添加$ (2)[],[]中变量可使用也可不使用$ (3)(())变量名之前必须添加$
- 6 让我们的C#程序开始做点数学运算
请相信我你只需要懂得最基本的数学运算,就可以从事大多数的软件项目的开发工作.千万不要一提编程,就让数学把你吓跑了.大多数的程序开发人员从事的编程工作是应用系统的开发.这些系统的绝大多数功能,只需要最基 ...
- shell编程之数学运算
shell数学运算支持整数运算的四种方法 1.let命令 no1=4; no2=5; let result=no1+no2 2.[]操作符 result=$[ no1 + no2] 3.(())操作符 ...
- 玩转变量、环境变量以及数学运算(shell)
变量和环境变量 var=value 给变量赋值,输出语句:$ echo $var或者是$ echo ${var},记住中间有个空格 例如:name="coffee" age ...
- css3 calc():css简单的数学运算-加减乘除
css3 calc():css简单的数学运算–加减乘除 多好的东西啊,不用js,一个css就解决了. .box{ border:1px solid #ddd; width:calc(100% - 10 ...
- Linux Shell 数学运算
Linux Shell 数学运算 在Linux中直接使用数学运算符进行数学运算往往得不到我们想要的计算结果.要在Shell中进行数学运算,我们需要借助点小手段.目前,Linux Shell中进行数学运 ...
随机推荐
- Java 迭代接口:Iterator、ListIterator 和 Spliterator
1. 简介 当我们使用 for 或 while 循环来遍历一个集合的元素,Iterator 允许我们不用担心索引位置,甚至让我们不仅仅是遍历一个集合,同时还可以改变它.例如,你如果要删除循环中的元素, ...
- CRNN+CTC (基于CTPN 的end-to-end OCR)
1. https://zhuanlan.zhihu.com/p/43534801 (详细原理) 2. https://blog.csdn.net/forest_world/article/detai ...
- Cassandra查询操作趟坑记录
例子表 CREATE TABLE employee ( name TEXT, age SMALLINT, phone TEXT, bornDate DATE, createDate timestamp ...
- Ion内存的带cahce与不带cache问题分享
一次开发中,遇到一个问题:YUV图像(由本地磁盘文件读到ION内存中)缩放时,对于缩放模块的输入源来说,使用带cache的方式要比不带cache的方式速度快数10倍. 为什么会出现这个情况呢? 在解释 ...
- JS核心之DOM操作 下
目录: 1.节点类型之Document类型 2.节点类型之Element类型 3.节点类型之Text类型 4.综合小示例 -- 动态添加外部样式文件 5.查找元素的扩展方法 接上篇,我们先来看常用的三 ...
- python 冷知识(装13 指南)
python 冷知识(装13 指南) list1 += list2 和 list1 = list1 + list2 的区别 alpha = [1, 2, 3] beta = alpha # alpha ...
- Android Studio安卓学习笔记(三)Android用户界面的设计布局与组件(一)用户界面布局设计(1)
当我们创建了一个安卓项目后,我们会发现真正建立一个完善的安卓项目并不是想象的那么容易.其实和设计GUI可视化界面一样,开发安卓也需要考虑很多方面,主要考虑的还是界面布局和需要的组件. 一:Androi ...
- k近邻法的实现
k近邻法 模型 使用的模型实际上对应于特征空间的划分.模型的三个基本要素:1.距离度量 2. k值的选择 3. 分类决策规则决定. k值的选择:k值的选择,k如果选择的过小会导致过拟合,模型会变得复杂 ...
- 牛客第七场 Sudoku Subrectangles
链接:https://www.nowcoder.com/acm/contest/145/J来源:牛客网 You have a n * m grid of characters, where each ...
- hdu6351 Beautiful Now 杭电第五场 暴力枚举
Beautiful Now Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)T ...