小编DBa*_*ker的帖子

PyTorch 张量切片和内存使用

import torch
T = torch.FloatTensor(range(0,10 ** 6)) # 1M

#case 1:
torch.save(T, 'junk.pt')
# results in a 4 MB file size

#case 2:
torch.save(T[-20:], 'junk2.pt')
# results in a 4 MB file size

#case 3:
torch.save(torch.FloatTensor(T[-20:]), 'junk3.pt')
# results in a 4 MB file size

#case 4:
torch.save(torch.FloatTensor(T[-20:].tolist()), 'junk4.pt')
# results in a 405 Bytes file size

Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 在第 3 种情况下,生成的文件大小似乎令人惊讶,因为我们正在创建一个新的张量。为什么这个新张量不仅仅是切片?

  2. 情况 4 是仅保存张量的一部分(切片)的最佳方法吗?

  3. 更一般地说,如果我想通过删除它的前半部分值来“修剪”一个非常大的一维张量以节省内存,我是否必须像情况 4 那样继续,或者是否有更直接且计算量更少的方法不涉及创建 python 列表的昂贵方式。

python pytorch

2
推荐指数
1
解决办法
1079
查看次数

标签 统计

python ×1

pytorch ×1