После преобразования модуля 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] почему тензор веса находится в GPU?