Estoy tratando de entrenar a un DNN modelo de uso de la pytorch, y quiero utilizar la GPU para entrenar a mi modelo. Soy capaz de copiar correctamente mi modelo a la GPU usando model.to(device)
, donde device = cuda:0
.
Sin embargo, los métodos estándar para la copia de entrada para la GPU, (RuntimeError: tipo de Entrada (de la antorcha.FloatTensor) y tipo de peso (de la antorcha.cuda.FloatTensor) debe ser el mismo), que es, X.to(device)
y X.cuda()
no me dan el resultado deseado. El siguiente es el método actualmente estoy implementando:
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)
En la impresión del valor de dispositivo print(device)
se muestra como: cuda:0
. Pero cuando voy a ejecutar print(X.is_cuda)
devuelve false
. (Captura de pantalla adjunta a continuación).
Por favor, hágamelo saber donde estoy pasando mal. Gracias!