是否pytorch
支持重复张量 无需分配更多内存 ?
假设我们有一个张量
t = torch.ones((1,1000,1000))
t10 = t.repeat(10,1,1)
重复
t
10 次将需要占用 10 倍的内存。有没有办法创建张量 t10
没有分配更多的内存?Here是一个相关的问题,但没有答案。
最佳答案
您可以使用 torch.expand
t = torch.ones((1, 1000, 1000))
t10 = t.expand(10, 1000, 1000)
请记住,
t10
只是对 t
的引用.例如,更改为 t10[0,0,0]
将导致 t[0,0,0]
中的相同变化和t10[:,0,0]
的每一位成员.除了直接访问,大多数操作在
t10
上执行将导致内存被复制,这将破坏引用并导致使用更多内存。例如:更改设备( .cpu()
、 .to(device=...)
、 .cuda()
)、更改数据类型( .float()
、 .long()
、 .to(dtype=...)
4),或使用 |67914| .
关于memory - 在不复制内存的情况下重复 pytorch 张量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59757933/