[深度学习框架] Pytorch源码学习之Tensor

Tensor

总览:Tensor对象中包含Storage对象,Storage完成对原数据的抽象:Storage中包含指向原始数据的指针以及用于内存分配的Allocator
在这里插入图片描述
pytorch虽然是python first的设计,但所有heavy work都是由C++实现的

在python 中,C++代码的集成由extension完成

pytorch使用基础张量操作库ATen,其他都在ATen基础上建立

Autograd就是在ATen上实现的,它能进行自动微分。

python中,万物皆对象

在这里插入图片描述

zero-copy操作

numpy和pytorch的tensor很方便相互转换,但是torch.tensor(np_array)torch.from_numpy(np_array)对数据的拷贝有些不同
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

数据指针

Tensor中并不储存数据,而是存储有对应numpy数组的数据指针的拷贝
在这里插入图片描述

Tensor Storage

数据的抽象是在Storage中
在这里插入图片描述
在这里插入图片描述

CPU和GPU上内存分配

在这里插入图片描述

【参考文献】
1、https://speakerdeck.com/perone/pytorch-under-the-hood

猜你喜欢

转载自blog.csdn.net/qq_26020233/article/details/89007762