Pytorch教程入门系列3

系列文章目录

第一章 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


总结

以上就是今天要讲的内容,本文仅仅简单介绍了自动广播与向量化内存共享的使用,今后的学习中我们再更深切体会。

猜你喜欢

转载自blog.csdn.net/weixin_46417939/article/details/128193697