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解析json文件相关知识学习
Mar 01 Python
python3中set(集合)的语法总结分享
Mar 24 Python
Python3 模块、包调用&amp;路径详解
Oct 25 Python
Python实现的插入排序算法原理与用法实例分析
Nov 22 Python
dataframe设置两个条件取值的实例
Apr 12 Python
Django 接收Post请求数据,并保存到数据库的实现方法
Jul 12 Python
python函数参数(必须参数、可变参数、关键字参数)
Aug 16 Python
python 按钮点击关闭窗口的实现
Mar 04 Python
django创建超级用户时指定添加其它字段方式
May 14 Python
Python中常见的数制转换有哪些
May 27 Python
Python环境使用OpenCV检测人脸实现教程
Oct 19 Python
Python 制作查询商品历史价格的小工具
Oct 20 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实现的Curl封装类Curl.class.php用法实例分析
2015/09/25 PHP
ThinkPHP框架里隐藏index.php
2016/04/12 PHP
firefox中用javascript实现鼠标位置的定位
2007/06/17 Javascript
javascript判断是否按回车键并解决浏览器之间的差异
2014/05/13 Javascript
使用jquery.upload.js实现异步上传示例代码
2014/07/29 Javascript
javascript中定义类的方法汇总
2014/12/28 Javascript
JavaScript使ifram跨域相互访问及与PHP通信的实例
2016/03/03 Javascript
原生js实现放大镜效果
2017/01/11 Javascript
webpack打包单页面如何引用的js
2017/06/07 Javascript
vue 将页面公用的头部组件化的方法
2017/12/18 Javascript
vue 2.0 购物车小球抛物线的示例代码
2018/02/01 Javascript
vue-cli项目修改文件热重载失效的解决方法
2018/09/19 Javascript
小程序实现多选框功能
2018/10/30 Javascript
js实现图片3D轮播效果
2019/09/21 Javascript
[05:39]2014DOTA2国际邀请赛 DK晋级胜者组专访战队国士无双
2014/07/14 DOTA
python实现ipsec开权限实例
2014/11/11 Python
Python Django使用forms来实现评论功能
2016/08/17 Python
Python实现ssh批量登录并执行命令
2016/10/25 Python
python嵌套字典比较值与取值的实现示例
2017/11/03 Python
Python实现计算文件MD5和SHA1的方法示例
2019/06/11 Python
Python脚本利用adb进行手机控制的方法
2019/07/08 Python
From CSV to SQLite3 by python 导入csv到sqlite实例
2020/02/14 Python
解决使用python print打印函数返回值多一个None的问题
2020/04/09 Python
python将dict中的unicode打印成中文实例
2020/05/11 Python
django Layui界面点击弹出对话框并请求逻辑生成分页的动态表格实例
2020/05/12 Python
Python 基于jwt实现认证机制流程解析
2020/06/22 Python
Sam’s Club山姆会员商店:沃尔玛旗下高端会员制商店
2017/01/16 全球购物
美国宠物用品网站:Value Pet Supplies
2018/03/17 全球购物
新年主持词
2014/03/27 职场文书
大学英语演讲稿范文
2014/04/24 职场文书
学校就业推荐信范文
2014/05/19 职场文书
社区法制宣传月活动总结
2015/05/07 职场文书
运动会100米加油稿
2015/07/21 职场文书
小程序后台PHP版本部署运行 LNMP+WNMP
2021/04/01 Servers
用JS创建一个录屏功能
2021/11/11 Javascript
如何解决php-fpm启动不了问题
2021/11/17 PHP