Eu estou tentando treinar um FANTÁSTICO modelo usando pytorch, e eu quero usar a GPU para treinar o meu modelo. Eu sou capaz de copiar com êxito o meu modelo para a GPU usando model.to(device)
, onde device = cuda:0
.
No entanto, os métodos padrão para copiar a entrada para o GPU, (RuntimeError: tipo de Entrada (tocha.FloatTensor) e peso (tipo de tocha.cuda.FloatTensor) deve ser o mesmo), isto é, X.to(device)
e X.cuda()
não me dá o resultado desejado. Seguinte é o método que eu estou atualmente em fase de implementação:
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)
Sobre a impressão de que o dispositivo de valor print(device)
ele mostra como: cuda:0
. Mas quando eu executar print(X.is_cuda)
ele retorna false
. (Imagem anexada abaixo).
Por favor, deixe-me saber para onde estou indo errado. Obrigado!