我知道了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
提交
取消