猿问

pytorch如何从张量中删除cuda()

我知道了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)


神不在的星期二
浏览 1071回答 3
3回答

动漫人物

您有一个浮动张量f,想要将其转换为long,您可以long_tensor = f.long()您有cuda张量,即数据在gpu上,并且想要将其移动到cpu上即可cuda_tensor.cpu()。所以要将torch.cuda.Float张量转换A为torch.long做A.long().cpu()

一只斗牛犬

Pytorch 0.4.0的最佳实践是编写与设备无关的代码:即,不使用.cuda(),.cpu()也可以简单地使用.to(torch.device("cpu"))A&nbsp;=&nbsp;A.to(dtype=torch.long,&nbsp;device=torch.device("cpu"))请注意,这.to()不是“就地”操作(例如,参见&nbsp;此答案),因此您需要将其分配A.to(...)回A。

九州编程

如果您有张量t。t&nbsp;=&nbsp;t.cpu()将是旧的方式。t&nbsp;=&nbsp;t.to("cpu")将是新的API。
随时随地看视频慕课网APP

相关分类

Python
我要回答