1 .. Когда вы выполняете только проверку, а не обучение,
вам не нужно рассчитывать градиенты для прямой и обратной фазы.
В этом случае ваш код может быть расположен под
with torch.no_grad():
...
net=Net()
pred_for_validation=net(input)
...
Приведенный выше код не использует память графического процессора
2 .. Если вы используете оператор + = в своем коде,
он может непрерывно накапливать градиент в вашем градиентном графике.
В этом случае вам нужно использовать float (), как на следующем сайте
https://pytorch.org/docs/stable/notes/faq.html#my-model-reports-cuda-runtime-error-2-out-of-memory
Даже если docs ведет с помощью float (), для меня item () также работает как
entire_loss=0.0
for i in range(100):
one_loss=loss_function(prediction,label)
entire_loss+=one_loss.item()
3 .. Если вы используете для цикла в обучающем коде,
данные могут быть сохранены, пока не закончится весь цикл.
Таким образом, в этом случае вы можете явно удалить переменные после выполнения optimizer.step ()
for one_epoch in range(100):
...
optimizer.step()
del intermediate_variable1,intermediate_variable2,...