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)
我的问题是:
在第 3 种情况下,生成的文件大小似乎令人惊讶,因为我们正在创建一个新的张量。为什么这个新张量不仅仅是切片?
情况 4 是仅保存张量的一部分(切片)的最佳方法吗?
更一般地说,如果我想通过删除它的前半部分值来“修剪”一个非常大的一维张量以节省内存,我是否必须像情况 4 那样继续,或者是否有更直接且计算量更少的方法不涉及创建 python 列表的昂贵方式。