Staram się trenować model DNN z pomocą pytorch, i chcę wykorzystać gpu do uczenia modelu. Mogę z powodzeniem skopiować swój model na procesor graficzny, za pomocą model.to(device)
gdzie device = cuda:0
.
Jednak standardowe metody kopiowania danych wejściowych na procesor graficzny (błąd wykonania: Typ wejścia (latarka.Pływakowy) i typ wagi (latarka.cuda.FloatTensor) musi być taki sam), czyli X.to(device)
i X.cuda()
nie daje mi pożądanego rezultatu. Poniżej znajduje się metoda, która obecnie внедряю:
def train_loop(self, dataloader, device):
size = len(dataloader.dataset)
for batch, (X, y) in enumerate(dataloader):
# Compute prediction and loss
print(device)
X.to(device)
print(X.is_cuda)
y.to(device)
pred = self.model(X)
loss = self.loss_fn(pred, y)
Podczas drukowania wartości urządzenia print(device)
to pokazuje, jak: cuda:0
. Ale kiedy biegnę print(X.is_cuda)
wraca false
. (Zrzut ekranu w załączeniu poniżej).
Proszę dać mi znać, gdzie się mylę. Dziękuję!