Pytorch 多维数组运算过程的索引处理方式


Posted in Python onDecember 27, 2019

背景:对 python 不熟悉,能看懂代码,也能实现一些简单的功能,但是对 python 的核心思想和编程技巧不熟,所以使 Pytorch 写 loss 的时候遇到很多麻烦,尤其是在 batch_size > 1 的时候,做矩阵乘法之类的运算会觉得特别不顺手。

所幸,在边查边写的过程中,理解了 python 中多维运算的实现规则。

1、python 的基本索引规则

从 0 开始

对于给定的范围,如 b = a[m:n], 那么 b 为由 (n-m)个数据组成的新数组,由 a[m],a[m+1],...,a[n-1] 构成。(若 n<m, 得到空)

2、单个 tensor 运算,使用 dim 参数

torch 中对 tensor 的操作方法,若不加 dim 参数表示对整体的 tensr 进行操作,若增加 dim 参则表示按维操作。

例:

a = [[1,2],[3,4],[5,6]] (torch.tensor)

torch.mean(a) => 3.5


torch.mean(a,dim=0) => [1.5, 3.5, 5.5]


torch.mean(a,dim=1) => [[3],[4]]


torch.mean(a,dim=0) => [3,4]


torch.mean(a,dim=1) => [1.5, 3.5, 5.5] 

注: torch.mean() 是一个降维的操作,所以不会出现在取均值后保持跟原 Tensor 同维的情况。 dim 参数存在时降一维,不存在时得到的是整个 Tensor 的均值。

3、两个 tensor 运算,构造对应形状

以乘法为例:

3.1 矩阵乘向量

a = [[1,2],[3,4],[5,6]]

b = [1,1]

计算乘法 c = a@b

若 a 拓展为 (N,3,2) N 为 batch_size, 计算 c2 = a@b

若 a,b 同时拓展, 变成(N, 2),那么需要做一个变换 b = b.view(N,2,1),计算 c3 = a@b

3.2 矩阵乘矩阵

a = [[1,2],[3,4],[5,6]]

b =[ [1,1],[1,1]]

计算乘法 c = a@b

若 a 拓展为 (N,3,2) N 为 batch_size, 计算 c2 = a@b

若 a,b 同时拓展, 变成(N, 2, 2),计算 c3 = a@b

以上这篇Pytorch 多维数组运算过程的索引处理方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python导出数据到Excel可读取的CSV文件的方法
May 12 Python
Python2.7读取PDF文件的方法示例
Jul 13 Python
python 换位密码算法的实例详解
Jul 19 Python
python将每个单词按空格分开并保存到文件中
Mar 19 Python
对python列表里的字典元素去重方法详解
Jan 21 Python
Python django框架应用中实现获取访问者ip地址示例
May 17 Python
pycharm重命名文件的方法步骤
Jul 29 Python
浅谈python 中的 type(), dtype(), astype()的区别
Apr 09 Python
文件上传服务器-jupyter 中python解压及压缩方式
Apr 22 Python
Python编写memcached启动脚本代码实例
Aug 14 Python
在 Golang 中实现 Cache::remember 方法详解
Mar 30 Python
Python实战之实现康威生命游戏
Apr 26 Python
Pytorch 之修改Tensor部分值方式
Dec 27 #Python
pytorch 实现tensor与numpy数组转换
Dec 27 #Python
Numpy与Pytorch 矩阵操作方式
Dec 27 #Python
基于python及pytorch中乘法的使用详解
Dec 27 #Python
pytorch:torch.mm()和torch.matmul()的使用
Dec 27 #Python
pytorch点乘与叉乘示例讲解
Dec 27 #Python
python已协程方式处理任务实现过程
Dec 27 #Python
You might like
深入php函数file_get_contents超时处理的方法详解
2013/06/03 PHP
PHP递归获取目录内所有文件的实现方法
2016/11/01 PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
2019/04/16 PHP
php 多继承的几种常见实现方法示例
2019/11/18 PHP
javascript中的有名函数和无名函数
2007/10/17 Javascript
js 页面执行时间计算代码
2009/03/04 Javascript
javascript 多级checkbox选择效果
2009/08/20 Javascript
jQuery对象和DOM对象使用说明
2010/06/25 Javascript
网页整体变灰白色(兼容各浏览器)实例
2013/04/21 Javascript
Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
2015/01/01 NodeJs
自定义函数实现IE7与IE8不兼容js中trim函数的问题
2015/02/03 Javascript
js实现仿百度风云榜可重复多次调用的TAB切换选项卡效果
2015/08/31 Javascript
jQuery中常用的遍历函数用法实例总结
2015/09/01 Javascript
Angular2内置指令NgFor和NgIf详解
2016/08/03 Javascript
JS计算两个时间相差分钟数的方法示例
2018/01/10 Javascript
浅谈实现vue2.0响应式的基本思路
2018/02/13 Javascript
Vue filter介绍及详细使用
2018/04/04 Javascript
Nodejs处理异常操作示例
2018/12/25 NodeJs
nodejs同步调用获取mysql数据时遇到的大坑
2019/03/02 NodeJs
微信小程序实现组件顶端固定或底端固定效果(不随滚动而滚动)
2020/04/09 Javascript
[01:54]TI珍贵瞬间系列(五):压力
2020/08/29 DOTA
Python 使用with上下文实现计时功能
2018/03/09 Python
玛蒂尔达简服装:Matilda Jane Clothing
2019/02/13 全球购物
广州御银科技股份有限公司试卷(C++)
2016/11/04 面试题
新员工培训个人的自我评价
2013/10/09 职场文书
2014自荐信的写作技巧
2014/01/28 职场文书
一名老师的自我评价
2014/02/07 职场文书
三爱活动实施方案
2014/03/19 职场文书
企业法人授权委托书
2014/04/03 职场文书
股份转让协议书
2014/04/12 职场文书
企业员工爱岗敬业演讲稿
2014/08/26 职场文书
2014年客房服务员工作总结
2014/11/18 职场文书
2016高三毕业赠言寄语
2015/12/04 职场文书
优秀创业计划书分享
2019/07/19 职场文书
Python中使用subprocess库创建附加进程
2021/05/11 Python
pandas中DataFrame数据合并连接(merge、join、concat)
2021/05/30 Python