Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

579
Visualizações
RuntimeError: Se esperaba que todos los tensores estuvieran en el mismo dispositivo, pero se encontraron al menos dos dispositivos, cuda:0 y cpu. al reanudar el entrenamiento

Guardé un punto de control mientras entrenaba en gpu. después de recargar el punto de control y continuar entrenando, aparece el siguiente error.

 Traceback (most recent call last): File "main.py", line 140, in <module> train(model,optimizer,train_loader,val_loader,criteria=args.criterion,epoch=epoch,batch=batch) File "main.py", line 71, in train optimizer.step() File "/opt/conda/lib/python3.7/site-packages/torch/autograd/grad_mode.py", line 26, in decorate_context return func(*args, **kwargs) File "/opt/conda/lib/python3.7/site-packages/torch/optim/sgd.py", line 106, in step buf.mul_(momentum).add_(d_p, alpha=1 - dampening) RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu!

mi código de entrenamiento es:

 def train(model,optimizer,train_loader,val_loader,criteria,epoch=0,batch=0): batch_count = batch if criteria == 'l1': criterion = L1_imp_Loss() elif criteria == 'l2': criterion = L2_imp_Loss() if args.gpu and torch.cuda.is_available(): model.cuda() criterion = criterion.cuda() print(f'{datetime.datetime.now().time().replace(microsecond=0)} Starting to train..') while epoch <= args.epochs-1: print(f'********{datetime.datetime.now().time().replace(microsecond=0)} Epoch#: {epoch+1} / {args.epochs}') model.train() interval_loss, total_loss= 0,0 for i , (input,target) in enumerate(train_loader): batch_count += 1 if args.gpu and torch.cuda.is_available(): input, target = input.cuda(), target.cuda() input, target = input.float(), target.float() pred = model(input) loss = criterion(pred,target) optimizer.zero_grad() loss.backward() optimizer.step() ....

el proceso de ahorro ocurre después de terminar cada época.

 torch.save({'epoch': epoch,'batch':batch_count,'model_state_dict': model.state_dict(),'optimizer_state_dict': optimizer.state_dict(),'loss': total_loss/len(train_loader),'train_set':args.train_set,'val_set':args.val_set,'args':args}, f'{args.weights_dir}/FastDepth_Final.pth')

No puedo entender por qué recibo este error. args.gpu == True, y estoy pasando el modelo, todos los datos y la función de pérdida a cuda, de alguna manera todavía hay un tensor en la CPU, ¿alguien podría averiguar qué está mal?

Gracias.

over 4 years ago · Hanz Gallego
1 Respostas
Responde à pergunta

0

Puede haber un problema con los parámetros del dispositivo:

Si necesita mover un modelo a GPU a través de .cuda() , hágalo antes de construir optimizadores para él. Los parámetros de un modelo después de .cuda() serán objetos diferentes a los de antes de la llamada.
En general, debe asegurarse de que los parámetros optimizados vivan en ubicaciones coherentes cuando se construyan y utilicen los optimizadores.

over 4 years ago · Hanz Gallego Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda