我知道了TypeError: expected torch.LongTensor (got torch.cuda.FloatTensor)。我如何轉換torch.cuda.FloatTensor為torch.LongTensor? Traceback (most recent call last): File "train_v2.py", line 110, in <module> main() File "train_v2.py", line 81, in main model.update(batch) File "/home/Desktop/squad_vteam/src/model.py", line 131, in update loss_adv = self.adversarial_loss(batch, loss, self.network.lexicon_encoder.embedding.weight, y) File "/home/Desktop/squad_vteam/src/model.py", line 94, in adversarial_loss adv_embedding = torch.LongTensor(adv_embedding)TypeError: expected torch.LongTensor (got torch.cuda.FloatTensor)
3 回答

動漫人物
TA貢獻1815條經驗 獲得超10個贊
您有一個浮動張量f
,想要將其轉換為long,您可以long_tensor = f.long()
您有cuda
張量,即數據在gpu上,并且想要將其移動到cpu上即可cuda_tensor.cpu()
。
所以要將torch.cuda.Float張量轉換A
為torch.long做A.long().cpu()

一只斗牛犬
TA貢獻1784條經驗 獲得超2個贊
Pytorch 0.4.0的最佳實踐是編寫與設備無關的代碼:即,不使用.cuda()
,.cpu()
也可以簡單地使用.to(torch.device("cpu"))
A = A.to(dtype=torch.long, device=torch.device("cpu"))
請注意,這.to()
不是“就地”操作(例如,參見 此答案),因此您需要將其分配A.to(...)
回A
。
添加回答
舉報
0/150
提交
取消