2017-09-21 1 views
0

Je suis nouveau à l'aide Pytorch et je reçois cette erreur lors de l'exécution de mon code:l'indexation d'un tenseur avec un objet de type torch.LongTensor

TypeError: l'indexation d'un tenseur avec un objet de type torch.LongTensor. Les seuls types pris en charge sont les entiers, les tranches, les scalaires numpy et torch.LongTensor ou torch.ByteTensor comme seul argument.

Pouvez-vous s'il vous plaît me pointer et la bonne direction et toute aide serait grandement appréciée.

if os.path.exists(CHECKPOINT_NAME): 
print("=> loading checkpoint '{}'".format(CHECKPOINT_NAME)) 
checkpoint = torch.load(CHECKPOINT_NAME) 
EPOCH = checkpoint['epoch'] 
BEST_LOSS = checkpoint['best_loss'] 
model.load_state_dict(checkpoint['state_dict']) 
optimizer.load_state_dict(checkpoint['optimizer']) 
print("=> loaded checkpoint '{}' (epoch {})" 
     .format(CHECKPOINT_NAME, checkpoint['epoch'])) 
else: 
    print("=> no checkpoint found at '{}'. Starting from scratch".format(CHECKPOINT_NAME)) 

for epoch in range(EPOCH, NUM_EPOCHS): 
    train(train_dataset_loader, model, loss_fn, optimizer, epoch + 1, val_dataset_loader) 
    loss = validate(val_dataset_loader, model, loss_fn) 

    if loss < BEST_LOSS: 
     print('{} better than previous best loss of {}'.format(loss, BEST_LOSS)) 
     BEST_LOSS = loss 
     is_best = True 
    else: 
     is_best = False 

    save_checkpoint({ 
      'epoch': epoch + 1, 
      'state_dict': model.state_dict(), 
      'best_loss': BEST_LOSS, 
      'optimizer' : optimizer.state_dict(), 
     }, is_best 
    ) 

ypeError         Traceback (most recent call last) 
 
<ipython-input-16-4c3a0a33f81b> in <module>() 
 
    12 
 
    13 for epoch in range(EPOCH, NUM_EPOCHS): 
 
---> 14  train(train_dataset_loader, model, loss_fn, optimizer, epoch + 1, val_dataset_loader) 
 
    15  loss = validate(val_dataset_loader, model, loss_fn) 
 
    16 
 

 
<ipython-input-14-13120db09b49> in train(train_loader, model, criterion, optimizer, epoch, val_loader) 
 
    65   # compute output 
 
    66   model.zero_grad() 
 
---> 67   log_probas, indices = model.forward(batch) 
 
    68 
 
    69   labels = Variable(batch['class'][indices]) 
 

 
<ipython-input-13-f9a47d332f53> in forward(self, batch) 
 
    18   gene = batch['gene'][indices] 
 
    19   variation = batch['variation'][indices] 
 
---> 20   text_batch = torch.stack(batch['text'], 0)[:, indices] 
 
    21 
 
    22   # Wrap all tensors around a variable. Send to GPU if possible.

+0

Dans quelle ligne l'erreur se produit-elle? – McLawrence

+0

Améliorez votre question, inclure l'extrait de code que nous pouvons utiliser pour reproduire l'erreur et inclure les détails de l'erreur aussi. –

+0

J'ai mis à jour mon message original pour refléter le TypeError –

Répondre

0

il y a encore des problèmes avec votre question. Vous n'avez pas partagé le code complet qui peut reproduire votre erreur.Depuis les erreurs, il est clair que vous avez un problème dans la fonction de transfert de votre modèle. L'erreur se produit dans la ligne ci-dessous. L'erreur se produit lors de l'indexation d'un tenseur sans la forme attendue. Donc, vérifiez la forme de la forme du tenseur en utilisant tensor.size(). Si vous avez besoin d'aide pour votre question, suivez les directives ci-dessous pour améliorer votre question.

Veuillez lire et suivre les consignes de publication dans la documentation d'aide. Minimal, complete, verifiable exemple s'applique ici. Nous ne pouvons pas vous aider efficacement tant que vous n'afficherez pas votre code MCVE et que vous ne décrivez pas précisément le problème. Nous devrions être en mesure de coller votre code posté dans un fichier texte et de reproduire le problème que vous avez décrit.

+0

Le code est plutôt grand, donc j'inclue le lien vers le code que j'essaie d'imiter. https://github.com/reiinakano/msk-cancer/blob/master/pytorch%2Bexperiment.ipynb –