对 torch 中 dim 的总结和理解
pytorch 中,使用到 dim 参数的 api 都是跟集合有关的,比如 max(), min(), mean(), softmax() 等。当指定某个 dim 时,表示使用该维度的所有元素进行集合运算,一个 tensor 的 shape 为 (3, 4, 5),分别对应的 dim 如下所示
dim | shape |
---|---|
0 | 3 |
1 | 4 |
2 | 5 |
当使用 max(dim=1) 时,表示使用第二个维度中全部四个元素中的每个元素参与求最大值计算,计算后的 shape 变为 (3,5),因为只从 四个中求得最大的那个作为结果。如果 shape 的长度为 3,则 dim 的取值只能在区间 [-3, 2],否则将报错。
Example
>>> a = torch.randn(3,4,5)
# 求得第二个维度的最大值
>>> torch.max(a,1)
torch.return_types.max(
values=tensor([[0.7700, 0.1390, 0.6952, 1.9428, 0.8477],[1.0085, 0.7961, 0.9462, 2.1287, 0.9356],[1.1520, 2.1478, 0.8291, 1.0854, 0.7780]]),
indices=tensor([[1, 1, 2, 2, 0],[1, 2, 2, 3, 0],[0, 1, 3, 3, 3]]))# 第二个维度缩减为只有一个元素,即 (3,1,5),api 将维度为 1 的去掉了
>>> torch.max(a,1).values.shape
torch.Size([3, 5])# 第三个维度缩减为只有一个元素,即 (3,4,1),api 将维度为 1 的去掉了
>>> torch.max(a,2).values.shape
torch.Size([3, 4])# 超出 dim 范围,报错
>>> torch.max(a,3).values.shape
Traceback (most recent call last):File "<stdin>", line 1, in <module>
IndexError: Dimension out of range (expected to be in range of [-3, 2], but got 3)
总结:
1、dim 是一种集合运算的参数,表示将某个维度的所有元素参与集合运算
2、dim 的取值和 shape 的长度密切相关,dim 的取值为 [-len(shape), len(shape)-1]
对 torch 中 dim 的总结和理解相关推荐
- 【增减维度】numpy和torch中的squeeze、unsqueeze理解
文章目录 1 为何要增减维度 2 numpy中的squeeze 函数 3 torch中的squeeze 函数 4 torch中的unsqueeze 函数 1 为何要增减维度 神经网络conv2d的输入 ...
- torch中repeat()函数的准确理解
pytorch中,repeat()这个函数的功能是很容易理解的,但是函数在不同参数下的执行逻辑通常还是会让初次接触的同学有点疑惑,今天仔细想了一下,感觉可以以这样的方式去理解: import torc ...
- 关于numpy,torch中seed()方法的一些理解
首先举几个使用seed()函数的例子: # 生成随机数,以便固定后续随机数,方便复现代码 random.seed(args.seed) # 没有使用GPU的时候设置的固定生成的随机数 np.rando ...
- Pytorch中tensor维度和torch.max()函数中dim参数的理解
Pytorch中tensor维度和torch.max()函数中dim参数的理解 维度 参考了 https://blog.csdn.net/qq_41375609/article/details/106 ...
- torch中Dataset的构造与解读
torch中Dataset的构造与解读 Dataset的构造 要自定义自己的数据集,首先需要继承Dataset(torch.utils.data.Dataset)类. 继承Dataset类之后,必须重 ...
- torch.Tensor(dim)与torch.Tensor((dim)), torch.Tensor(dim1,dim2)与torch.Tensor((dim1,dim2))的区别
1 torch.Tensor(dim)与torch.Tensor((dim))的区别 从三张截图可以看出这两者其实是完全一样的,都表示的是这个张量的维度而不是这个张量的数据,其中第一处之所以不同是因为 ...
- Torch 中添加自己的 nn Modules:以添加 Dropout、 Triplet Loss 为例
Preface 因为要复现前面阅读的一篇论文:<论文笔记:Deep Relative Distance Learning: Tell the Difference Between Similar ...
- torch中contiguous()函数
1. 背景 torch中一些操作会改变原数据,比如:narrow() view() expand() transpose()等操作,在使用transpose()进行转置操作时,pytorch并不会创建 ...
- 【增强学习】Torch中的增强学习层
要想在Torch框架下解决计算机视觉中的增强学习问题(例如Visual Attention),可以使用Nicholas Leonard提供的dpnn包.这个包对Torch中原有nn包进行了强大的扩展, ...
- torch中的copy()和clone()
torch中的copy()和clone() 1.torch中的copy()和clone() y = torch.Tensor(2,2):copy(x) --- 1 修改y并不改变原来的x y = x: ...
最新文章
- 青铜峡高级中学2021高考成绩查询,2021年吴忠高考成绩排名及成绩公布时间什么时候出来...
- objc@interface的设计哲学与设计技巧
- Gradle打包命令记录
- 4.8-全栈Java笔记:包机制
- 双系统(win10 1803+deepin 15.7)安装问题
- CodeForces 689E (离散化+逆元+组合)
- 关于equls和endsWith的悲哀(以后有equals的位置要仔细看一下了)!
- Spring整合Struts2,Hibernate的xml方式
- js里写网页结构, 传函数参数
- 前端面试-webpack篇
- 洛谷 P1573 栈的操作
- MapGIS制图学习(2)
- 计算机怎么改鼠标标志,图文帮你如何自定义电脑鼠标指针的图标
- 临湘东经子午线经度_经纬度与中央子午线查询表(精确到县级)
- NVIDIA显卡驱动重装
- 数据中台02:数据中台架构
- java计算机毕业设计springboot基汽车租赁系统管理系统
- 别错过,教你如何用电脑玩手机
- 《工程伦理与学术道德》期末考试
- 分享 | 自定义属于自己的U盘图标
热门文章
- 在mysql中 使用in关键字实现子查询_MySQL 之子查询
- HTML5期末大作业:旅游网站设计——北京旅游(1页) 北京旅游网页设计制作 简单静态HTML网页作品 我的旅游网页作业成品 学生旅游网站模板
- Android 侧边栏快速索引(点击索引、滑动索引),通讯录样式
- flv.js简单使用示例
- amoeba mysql_Mysql 基于 Amoeba 的 读写分离
- mysql执行计划explain介绍_MySQL中的执行计划explain详解
- [编程题]山寨金闪闪 (面试题)
- 深度数据全方位解析:冰桶挑战---TOMsInsight 2014.08.20
- 字符集和字符集编码详解
- 实习面试感悟-阿里云