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实现获取网站PR及百度权重
Jan 21 Python
Python写的Tkinter程序屏幕居中方法
Mar 10 Python
在主机商的共享服务器上部署Django站点的方法
Jul 22 Python
你所不知道的Python奇技淫巧13招【实用】
Dec 14 Python
python 每天如何定时启动爬虫任务(实现方法分享)
May 21 Python
Python多线程原理与用法实例剖析
Jan 22 Python
python判断字符串或者集合是否为空的实例
Jan 23 Python
十行代码使用Python写一个USB病毒
Jun 21 Python
Python内存管理实例分析
Jul 10 Python
Django 设置admin后台表和App(应用)为中文名的操作方法
May 10 Python
Python变量及数据类型用法原理汇总
Aug 06 Python
Python爬虫回测股票的实例讲解
Jan 22 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
用phpmyadmin更改mysql5.0登录密码
2008/03/25 PHP
在项目中寻找代码的坏命名
2012/07/14 PHP
深入PHP与浏览器缓存的分析
2013/06/03 PHP
简单的php购物车代码
2020/06/05 PHP
jQuery中ajax的get()方法用法实例
2014/12/26 Javascript
JavaScript删除指定子元素代码实例
2015/01/13 Javascript
Jquery基础之事件操作详解
2016/06/14 Javascript
基于Vuejs实现购物车功能
2016/08/02 Javascript
DOM操作原生js 的bug,使用jQuery 可以消除的解决方法
2016/09/04 Javascript
Javascript 创建类并动态添加属性及方法的简单实现
2016/10/20 Javascript
Javascript实现信息滚动效果
2017/05/18 Javascript
AngularJS中ng-class用法实例分析
2017/07/06 Javascript
react-redux中connect的装饰器用法@connect详解
2018/01/13 Javascript
Js 利用正则表达式和replace函数获取string中所有被匹配到的文本(推荐)
2018/10/28 Javascript
总结Python中逻辑运算符的使用
2015/05/13 Python
python编程之requests在网络请求中添加cookies参数方法详解
2017/10/25 Python
python、java等哪一门编程语言适合人工智能?
2017/11/13 Python
flask中主动抛出异常及统一异常处理代码示例
2018/01/18 Python
Python检查ping终端的方法
2019/01/26 Python
Python OpenCV 调用摄像头并截图保存功能的实现代码
2019/07/02 Python
django连接oracle时setting 配置方法
2019/08/29 Python
python异步编程 使用yield from过程解析
2019/09/25 Python
PYTHON实现SIGN签名的过程解析
2019/10/28 Python
python 实现多线程下载视频的代码
2019/11/15 Python
python 一维二维插值实例
2020/04/22 Python
详解在Python中使用Torchmoji将文本转换为表情符号
2020/07/27 Python
基于pycharm 项目和项目文件命名规则的介绍
2021/01/15 Python
CSS3标注引用的出处和来源的方法
2020/02/25 HTML / CSS
详解Html5微信支付爬坑之路
2018/07/24 HTML / CSS
国际化的太阳镜及太阳镜配件零售商:Sunglass Hut
2016/07/26 全球购物
韩国11街:11STREET
2018/03/27 全球购物
世界排名第一的运动鞋市场:Flight Club
2020/01/03 全球购物
股权投资意向书
2014/04/01 职场文书
员工合理化建议书
2014/05/19 职场文书
2016年师德先进个人事迹材料
2016/02/29 职场文书
SpringBoot详解自定义Stater的应用
2022/07/15 Java/Android