删除中间张量会影响PyTorch中的计算图吗?

时间:2020-06-09 07:58:06

标签: pytorch

要释放内存,我想知道是否可以在模型的正向方法中删除中间张量。这是一个最小化的示例场景:

def forward(self, input):
    x1, x2 = input
    x1 = some_layers(x1)
    x2 = some_layers(x2)
    x_conc = torch.cat((x1,x2),dim=1)
    x_conc = some_layers(x_conc)
    return x_conc

基本上,模型使两个张量通过两个单独的块,然后将结果连接起来。进一步的操作应用于该级联张量。创建x_conc后运行del x1del x2会影响计算图吗?

1 个答案:

答案 0 :(得分:2)

如果以后要执行自动微分,PyTorch会将x1, x2张量存储在计算图中。另外,请注意,使用del运算符删除张量是可行的,但不会看到GPU内存减少。为什么?因为内存已释放但没有返回到设备。这是一种优化技术,从用户的角度来看,内存已“释放”。也就是说,该内存现在可用于制作新的张量。

因此,不建议删除张量以释放GPU内存。