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