pytorch 如何从张量中删除 cuda()
pytorch how to remove cuda() from tensor
我得到了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)
你有一个 float 张量 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 的最佳实践是编写 device agnostic code: That is, instead of using .cuda()
or .cpu()
you can simply use .to(torch.device("cpu"))
A = A.to(dtype=torch.long, device=torch.device("cpu"))
请注意 .to()
不是 "in-place" 操作(参见 ),因此您需要将 A.to(...)
赋值回 A
.
如果你有一个张量t
。
t = t.cpu()
将是旧方法。
t = t.to("cpu")
将是新的 API。
我得到了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)
你有一个 float 张量 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 的最佳实践是编写 device agnostic code: That is, instead of using .cuda()
or .cpu()
you can simply use .to(torch.device("cpu"))
A = A.to(dtype=torch.long, device=torch.device("cpu"))
请注意 .to()
不是 "in-place" 操作(参见 A.to(...)
赋值回 A
.
如果你有一个张量t
。
t = t.cpu()
将是旧方法。
t = t.to("cpu")
将是新的 API。