系列文章目录
第一章 pytorch的基本介绍
第二章 pytorch的基本操作
第三章 pytorch的小特性
文章目录
前言
接下来我们介绍一个Pytorch 的小特性,初学者了解即可,不必深究。
一、什么是自动广播,向量化?
pytorch自动广播是不同形状的Tensor进行计算时,可自动扩展到较大的相同形状,再进行计算。
向量化则是在同一时间进行批量地并行计算,使用向量化直接对Tensor操作,避免低效率的for循环对元素逐个操作
二、自动广播注意点
1. tensor不能为空
2. 从尾部开始计算
3. 两个tensor的维度尺寸可以相等,不相等则要满足至少一个条件,维度为1或缺少
>>> a=torch.ones(4,1,6)
>>> b=torch.ones( 3,1)
# 从尾部遍历维度,b1对应a6,b3对应a1,a4对应不存在,因此满足广播条件,最后求和后的维度为[4,3,6]
>>> (a+b).size()
torch.Size([4, 3, 6])
>>> c=torch.ones(2,3)
>>> (a+c).size()
# a与c最后一维的维度为a6对应c3,不满足广播条件,因此报错
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
RuntimeError: The size of tensor a (6) must match the size of tensor c (3)
at non-singleton dimension 2
三、内存共享
PyTorch提供了一些原地操作运算,即in-place operation,不经过复制,直接在原来的内存上进行计算,节省内存开销。但本身的Tensor则会被改变。
主要有三种方式:
1 操作通过加后缀“_
2 Tensor与NumPy转换,是共用内存的
3 通过Tensor初始化、组合、变形等方式生成另一个Tensor
总结
以上就是今天要讲的内容,本文仅仅简单介绍了自动广播与向量化内存共享的使用,今后的学习中我们再更深切体会。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/73224.html