Pytorch 运行时错误:应为torch.cuda.FloatTensor类型,但得到torch.FloatTensor

Pytorch 运行时错误:应为torch.cuda.FloatTensor类型,但得到torch.FloatTensor,pytorch,Pytorch,我一直收到下面的错误消息。我似乎无法精确地指出所提到的张量。下面是trainer.py和main.py模块。我正在开发的模型是CelebA数据集上的GAN。我在远程服务器上运行代码,所以我花了一些时间调试我的模型 这是完整的错误消息: Traceback (most recent call last): File "main.py", line 52, in <module> main(opt) File "main.py", line 47, in main

我一直收到下面的错误消息。我似乎无法精确地指出所提到的张量。下面是trainer.py和main.py模块。我正在开发的模型是CelebA数据集上的GAN。我在远程服务器上运行代码,所以我花了一些时间调试我的模型

这是完整的错误消息:

Traceback (most recent call last):
  File "main.py", line 52, in <module>
    main(opt)
  File "main.py", line 47, in main
    trainer.train(train_loader)
  File "/home/path/trainer.py", line 45, in train
    d_loss_cls = F.binary_cross_entropy_with_logits(out_cls, label_org, size_average=False) / out_cls.size(0)
  File "/home/path/anaconda3/lib/python3.7/site-packages/torch/nn/functional.py", line 2077, in binary_cross_entropy_with_logits
    return torch.binary_cross_entropy_with_logits(input, target, weight, pos_weight, reduction_enum)
RuntimeError: expected type torch.cuda.FloatTensor but got torch.FloatTensor
main.py

import argparse
随机输入
进口火炬
从火炬进口
将torch.optim导入为optim
从torch.utils.data导入数据加载器
导入torchvision.transforms作为变换
从预处理导入预处理过程
从celeb_数据集导入CelebDataset
从培训师进口培训师
#设置参数解析器
parser=argparse.ArgumentParser()
add_参数('--workers',type=int,help='number of data loading worker',default=4)
add_参数('--batchSize',type=int,default=8,help='input batch size')
add_参数('--epochs',type=int,default=20,help='number of epochs to train')
add_参数('--lr',type=float,default=0.0002,help='learning rate')
parser.add_参数('--cuda',action='store_true',help='enablescuda')
add_参数('--manualSeed',type=int,help='manualSeed')
parser.add_参数('--dataset_path',type=str,default='./data/celeba',help='dataset path')
opt=parser.parse_args()
打印(可选)
如果opt.manualSeed为无:
opt.manualSeed=random.randint(11000)
打印(“随机种子:”,选择手动种子)
def总管(opt):
#设置培训/测试的参数
参数={
“批次大小”:opt.batchSize,
“洗牌”:没错,
“num_workers”:opt.workers
}
#预处理和设置数据集和datalader
已处理的\u数据=预处理(opt.dataset\u路径)
列车数据集=CelebDataset(处理的列车数据[:-2000])
test_dataset=CelebDataset(已处理的_数据[2000:])
列车加载器=数据加载器(列车数据集,**参数)
测试加载程序=数据加载程序(测试数据集,**参数)
培训师=培训师(可选)
培训师培训(列车装载机)
培训师测试(测试装载机)
如果名称=“\uuuuu main\uuuuuuuu”:
主要(可选)

您收到该错误是因为GPU上没有一个
out\u cls,label\u org

您的代码在哪里设置
解析器。添加参数('--cuda',action='store\u true',help='enables cuda')
选项

也许是这样的:

trainer = Trainer(opt)
if opt.cuda:
    trainer = trainer.cuda()

在将输入张量传递给培训师之前,您可能忘记将输入张量
转换为('cuda')
。我已将main.py(第五行至最后一行)更新为包含cuda,但同样的问题仍然存在。我刚刚上传了与我的GAN相关的所有代码文件。你能在它断开的那一行之前同时打印出cls.device和label\u org.device,然后看看哪一个不在GPU上吗?你完全正确。CLS设备确实在CPU上。我现在遇到了我将尝试排除的其他错误。非常感谢。