我得到了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)
如果你有张量
t
。在会是老办法。在
^{pr2}$将是新的API。在
你有一个float张量
f
,想把它转换成long,你就long_tensor = f.long()
你有
cuda
张量,也就是说数据在gpu上,想把它移到cpu上你可以做cuda_tensor.cpu()
。在所以要把手电筒浮筒张量
A
到火炬长做A.long().cpu()
Pythorc0.4.0的最佳实践是编写device agnostic code:也就是说,不使用},您只需使用^{}
.cuda()
或{注意
.to()
不是一个“就地”操作(参见例如this answer),因此需要将A.to(...)
分配回A
。在相关问题 更多 >
编程相关推荐