【发布时间】:2021-07-31 12:59:47
【问题描述】:
当我致电torch.from_numpy 时,我对torch 所做的事情很感兴趣。顾名思义,PyTorch 似乎创建了一个 Tensor 实例并分配内存以将内容从 numpy ndarray 复制到自身。但是 PyTorch 是如何完成 memcpy 工作的,PyTorch 在后台还做了什么?似乎张量的实现在autograd。但我不知道我应该寻找哪个部分。
我有这个问题,因为我发现从 numpy 构造张量非常快。而且比直接创建张量还要快
a = np.random.randn(100,100)
%timeit torch.from_numpy(a)
759 ns ± 7.53 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
%timeit torch.randn(100,100)
61 µs ± 2.46 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
%timeit torch.zeros(100,100)
3.1 µs ± 136 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
【问题讨论】:
标签: python numpy pytorch numpy-ndarray tensor