Machine learning 在Pytork中,我希望保存每个历元的输出,以便稍后计算。但经过几个时代之后,它会导致内存不足错误,

Machine learning 在Pytork中,我希望保存每个历元的输出,以便稍后计算。但经过几个时代之后,它会导致内存不足错误,,machine-learning,pytorch,out-of-memory,computation-graph,Machine Learning,Pytorch,Out Of Memory,Computation Graph,在Pytork中,我希望保存每个时代的输出,以备后期计算。但经过几个时代之后,它会导致内存不足错误。代码如下所示: L=[] optimizer.zero_grad() for i, (input, target) in enumerate(train_loader): output = model(input) L.append(output) *** updata my model to minimize a loss func

在Pytork中,我希望保存每个时代的输出,以备后期计算。但经过几个时代之后,它会导致内存不足错误。代码如下所示:

    L=[]
    optimizer.zero_grad()
    for i, (input, target) in enumerate(train_loader):
        output = model(input)
        L.append(output)
    *** updata my model to minimize a loss function. List L will be used here. 

我知道原因是因为pytorch保存了每个时代的所有计算图。
但是只有在获得所有预测结果后才能计算损失函数


有什么方法可以训练我的模型吗?

你在GPU上训练吗

如果是这样的话,你可以像移动内存一样移动它

    L.append(output.detach().cpu())

“损失函数只能在获得所有预测结果后才能计算”-这是什么意思?在整个
列车装载机的数据传递后,您是否只计算损耗并更新参数一次?如果是的话,你能把这个代码也贴出来吗?是的,我是认真的。损失函数是loke L=L(torch.sum(L),Label),那么,如果对其进行求和,将输出附加到
列表中有什么意义呢?什么是
L
,这里是一个
列表
,您不能通过
列表
计算损失函数。。。你能不能也添加代码的相关部分?在我看来,将输出附加到列表或求和实际上没有什么区别。它们都会引起OOM。