1. 加法运算

示例代码:

import torch

# 这两个Tensor加减乘除会对b自动进行Broadcasting

a = torch.rand(3, 4)

b = torch.rand(4)

c1 = a + b

c2 = torch.add(a, b)

print(c1.shape, c2.shape)

print(torch.all(torch.eq(c1, c2)))

输出结果:

torch.Size([3, 4]) torch.Size([3, 4])

tensor(1, dtype=torch.uint8)

2. 减法运算

示例代码:

a = torch.rand(3, 4)

b = torch.rand(4)

c1 = a - b

c2 = torch.sub(a, b)

print(c1.shape, c2.shape)

print(torch.all(torch.eq(c1, c2)))

输出结果:

torch.Size([3, 4]) torch.Size([3, 4])

tensor(1, dtype=torch.uint8)

3. 哈达玛积(element wise,对应元素相乘)

示例代码:

c1 = a * b

c2 = torch.mul(a, b)

print(c1.shape, c2.shape)

print(torch.all(torch.eq(c1, c2)))

输出结果:

torch.Size([3, 4]) torch.Size([3, 4])

tensor(1, dtype=torch.uint8)

4. 除法运算

示例代码:

c1 = a / b

c2 = torch.div(a, b)

print(c1.shape, c2.shape)

print(torch.all(torch.eq(c1, c2)))

输出结果:

torch.Size([3, 4]) torch.Size([3, 4])

tensor(1, dtype=torch.uint8)

5. 矩阵乘法

(1)二维矩阵相乘

二维矩阵乘法运算操作包括torch.mm()、torch.matmul()、@,

示例代码:

import torch

a = torch.ones(2, 1)

b = torch.ones(1, 2)

print(torch.mm(a, b).shape)

print(torch.matmul(a, b).shape)

print((a @ b).shape)

输出结果:

torch.Size([2, 2])

torch.Size([2, 2])

torch.Size([2, 2])

(2)多维矩阵相乘

对于高维的Tensor(dim>2),定义其矩阵乘法仅在最后的两个维度上,要求前面的维度必须保持一致,就像矩阵的索引一样并且运算操只有torch.matmul()。

示例代码:

c = torch.rand(4, 3, 28, 64)

d = torch.rand(4, 3, 64, 32)

print(torch.matmul(c, d).shape)

输出结果:

torch.Size([4, 3, 28, 32])

注意,在这种情形下的矩阵相乘,前面的"矩阵索引维度"如果符合Broadcasting机制,也会自动做广播,然后相乘。

示例代码:

c = torch.rand(4, 3, 28, 64)

d = torch.rand(4, 1, 64, 32)

print(torch.matmul(c, d).shape)

输出结果:

torch.Size([4, 3, 28, 32])

6. 幂运算

示例代码:

import torch

a = torch.full([2, 2], 3)

b = a.pow(2) # 也可以a**2

print(b)

输出结果:

tensor([[9., 9.],

[9., 9.]])

7. 开方运算

示例代码:

c = b.sqrt() # 也可以a**(0.5)

print(c)

d = b.rsqrt() # 平方根的倒数

print(d)

输出结果:

tensor([[3., 3.],

[3., 3.]])

tensor([[0.3333, 0.3333],

[0.3333, 0.3333]])

8.指数与对数运算

注意log是以自然对数为底数的,以2为底的用log2,以10为底的用log10

示例代码:

import torch

a = torch.exp(torch.ones(2, 2)) # 得到2*2的全是e的Tensor

print(a)

print(torch.log(a)) # 取自然对数

输出结果:

tensor([[2.7183, 2.7183],

[2.7183, 2.7183]])

tensor([[1., 1.],

[1., 1.]])

9.近似值运算

示例代码:

import torch

a = torch.tensor(3.14)

print(a.floor(), a.ceil(), a.trunc(), a.frac()) # 取下,取上,取整数,取小数

b = torch.tensor(3.49)

c = torch.tensor(3.5)

print(b.round(), c.round()) # 四舍五入

输出结果:

tensor(3.) tensor(4.) tensor(3.) tensor(0.1400)

tensor(3.) tensor(4.)

10. 裁剪运算

即对Tensor中的元素进行范围过滤,不符合条件的可以把它变换到范围内部(边界)上,常用于梯度裁剪(gradient clipping),即在发生梯度离散或者梯度爆炸时对梯度的处理,实际使用时可以查看梯度的(L2范数)模来看看需不需要做处理:w.grad.norm(2)。

示例代码:

import torch

grad = torch.rand(2, 3) * 15 # 0~15随机生成

print(grad.max(), grad.min(), grad.median()) # 最大值最小值平均值

print(grad)

print(grad.clamp(10)) # 最小是10,小于10的都变成10

print(grad.clamp(3, 10)) # 最小是3,小于3的都变成3;最大是10,大于10的都变成10

输出结果:

tensor(14.7400) tensor(1.8522) tensor(10.5734)

tensor([[ 1.8522, 14.7400, 8.2445],

[13.5520, 10.5734, 12.9756]])

tensor([[10.0000, 14.7400, 10.0000],

[13.5520, 10.5734, 12.9756]])

tensor([[ 3.0000, 10.0000, 8.2445],

[10.0000, 10.0000, 10.0000]])

以上这篇Pytorch Tensor基本数学运算详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

本文标题: Pytorch Tensor基本数学运算详解

本文地址: http://www.cppcns.com/jiaoben/python/296122.html

python开方运算符_Pytorch Tensor基本数学运算详解相关推荐

  1. (转)C语言位运算详解

    地址:http://www.cnblogs.com/911/archive/2008/05/20/1203477.html C语言位运算详解 作者:911 说明:本文参考了http://www2.ts ...

  2. 位运算详解+竞赛常见用法总结

    目录 一.位运算详解 二.位运算应用 1.快速幂 2.给定一个数组A, 长度为n,求下面这段程序的值 3.数数字 4.数数字 2 5.nim博弈问题: 6.树状数组 7.判断一个数x是不是2的某次方 ...

  3. python画二维散点图-基于python 二维数组及画图的实例详解

    1.二维数组取值 注:不管是二维数组,还是一维数组,数组里的数据类型要一模一样,即若是数值型,全为数值型 #二维数组 import numpy as np list1=[[1.73,1.68,1.71 ...

  4. Python中的list/tuple/dict/set数据类型详解

    Python中的list/tuple/dict/set数据类型详解 Python内部内置了一些数据类型与结构,可以方便在编程时候的使用. list List存储一系列的有序集合,并且元素内容可变(可更 ...

  5. python中append函数解析_对python中的pop函数和append函数详解

    对python中的pop函数和append函数详解 pop()函数 1.描述 pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值. 语法 pop()方法语法: list. ...

  6. Computer:字符编码(ASCII编码/GBK编码/BASE64编码/UTF-8编码)的简介、案例应用(python中的编码格式及常见编码问题详解)之详细攻略

    Computer:字符编码(ASCII编码/GBK编码/BASE64编码/UTF-8编码)的简介.案例应用(python中的编码格式及常见编码问题详解)之详细攻略 目录 符串编码(ASCII编码/GB ...

  7. php的位运算,php的位运算详解

    php的运算符有一类是位运算的,本文主要和大家分享php的位运算详解,希望能帮助到大家. 一:& And按位与 $a&$b 将把二进制$a和二进制$b位数都为1的设为1,其他位为0 例 ...

  8. 一篇搞定位运算——java位运算详解

    java位运算详解 前言 一.位运算符 &:按位与 |:按位或 ~:按位非 ^:按位异或 <<:左位移运算符 >>:右位移运算符 <<<:无符号右移运 ...

  9. 站长在线Python精讲:在Python中格式化字符串的两种方法详解

    欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python中格式化字符串的两种方法详解>.本知识点主要内容有:使用%操作符格式化字符串和使用format()方法格式化字 ...

最新文章

  1. [转载]SQL Server行列转换实现
  2. RabbitMQ使用详解
  3. go html vue,用Go+Vue.js快速搭建一个Web应用(初级demo)
  4. 《编译原理》第三章知识点
  5. 删除副本列表中的消失项目符号
  6. Jenkins忘记密码的修复方法(Windows/Linux)
  7. 京东php asp,jd jd demo 关于php的代码里面是 一些京东的接口 包含了 重要 WEB(ASP,PHP,...) 238万源代码下载- www.pudn.com...
  8. java unsigined short_LDD之数据类型
  9. 麻烦缠身的高通“向前看”:关注服务器市场和5G
  10. 微信小程序位置定位php,【微信开发】微信小程序通过经纬度计算两地距离php代码实现...
  11. 高德地图看各省分界线_请教 高德地图绘制行政区划边界
  12. 设置android模拟器的ip地址,安卓模拟器怎么改IP地址和分辨率,怎么改机型
  13. 谷歌浏览器86版_VMLogin 浏览器1.2.8.0 版本更新公告:全新内核 Chromium 86.0.4240.75 更新说明...
  14. 机器人抓取中物体3D定位算法介绍
  15. Win10如何关闭自动更新
  16. PERT(计划评审技术,Program Evaluation an Review Technique)
  17. kubeadm部署kubernetes集群
  18. 疫情期间如何做到远程监控,实现设备的“智慧把守”?
  19. android手机华为p10,谁是运行速度最快的安卓手机?华为P10
  20. 微软自带杀毒软件Security Essentials占电脑内存很小 推荐使用可以安装下载

热门文章

  1. [SCOI2008]着色方案(DP)
  2. Manthan, Codefest 19 (open for everyone, rated, Div. 1 + Div. 2) F. Bits And Pieces sosdp预处理超集
  3. Codeforces Round #606 (Div. 2, based on Technocup 2020 Elimination Round 4) dfs + 思维
  4. SRM614 Div1 Hard
  5. [NOIP 2009 提高组]最优贸易
  6. 字符串距离(opj )(动态规划)
  7. 周期长度和(KMP)
  8. dfs剪枝:洛谷P2809 hzwer爱折纸
  9. CF1511G-Chips on a Board【倍增】
  10. P2485-[SDOI2011]计算器【BSGS,exgcd,快速幂】