Pytorch的大多数组件源码由C++实现并提供Python接口

image.png

Tensors

虽然Pytorch以Python为主,但是所有重的任务组件都是用C++实现

ZERO-COPYING

  1. import numpy as np
  2. import torch
  3. import torch.nn.functional as F
  4. np_array = np.array([[1.,1.],[1., 1.]])
  5. torch_array = torch.from_numpy(np_array)
  6. torch_array.add_(1.0)

image.png

奇特的一点是np_array的数组会随着torch_array的变化而变化, 但是np_array变化torch_array不会变化。

image.png

参考

https://speakerdeck.com/perone/pytorch-under-the-hood?slide=10