【发布时间】:2020-05-22 21:27:08
【问题描述】:
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
我的问题是:
-
在案例 3 中,生成的文件大小似乎令人惊讶,因为我们正在创建一个新张量。为什么这个新张量不只是切片?
-
案例 4 是仅保存张量的一部分(切片)的最佳方法吗?
-
更一般地说,如果我想通过删除其值的前半部分来“修剪”一个非常大的一维张量以节省内存,我是否必须像案例 4 那样继续,或者是否有更直接的方法?并且不涉及创建 python 列表的计算成本更低的方式。
【问题讨论】: