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