После преобразования модуля A в ЦП тензор исходного параметра все еще остается на графическом процессоре? Когда он выйдет? Будет ли неправильно, если я повторно использую параметр?
Мой код:
import torch.nn as nn
class A(nn.Module):
def __init__(self):
super().__init__()
self.fc = nn.Linear(10, 5)
self.relu = nn.ReLU()
def forward(self, x):
return self.relu(self.fc(x))
a = A().to('cuda')
weight = {}
for key, value in a.state_dict().items():
weight[key] = value
a.to('cpu')
print("a.state_dict() device:", [t.device for t in a.state_dict().values()]) # in CPU
print("weight device:", [t.device for t in weight.values()]) # still in GPU
После преобразования модуля A в ЦП тензор исходного параметра все еще остается на графическом процессоре? Когда он выйдет? Будет ли неправильно, если я повторно использую параметр? Мой код: [code]import torch.nn as nn
weight = {} for key, value in a.state_dict().items(): weight[key] = value
a.to('cpu') print("a.state_dict() device:", [t.device for t in a.state_dict().values()]) # in CPU print("weight device:", [t.device for t in weight.values()]) # still in GPU [/code] Результат: [code]a.state_dict() device: [device(type='cpu'), device(type='cpu'), device(type='cpu'), device(type='cpu')]
weight device: [device(type='cuda', index=0), device(type='cuda', index=0), device(type='cuda', index=0), device(type='cuda', index=0)] [/code] Почему тензоры веса все еще находятся на графическом процессоре?