查看: 1665|回复: 1

RuntimeError: Expected object of type torch.DoubleTensor but found type torch...

[复制链接]

4

主题

34

帖子

88

积分

注册会员

Rank: 2

积分
88
发表于 2018-10-15 14:33:11 | 显示全部楼层 |阅读模式
本帖最后由 爱心觉罗 于 2018-10-15 14:40 编辑

近在使用新版 Pytorch 0.4.0训练 GAN 的时候遇到了这样一个BUGRuntimeError: Expected object of type torch.DoubleTensor but found type torch.cuda.FloatTensor for argument #2 ‘weight’不说了直接上错误地方的代码:
main.py

  1. cudnn.benchmark = True
  2.     device = torch.device('cuda:3')
  3.     G = Generator().to(device)
  4.     D = Discriminator().to(device)
复制代码
main.py
  1. for epoch in range(num_epochs):
  2.         for t, x in enumerate(loader):
  3.             optimizerD.zero_grad()
  4.             optimizerG.zero_grad()
  5.             x.requires_grad_().to(device)
  6.             noise_size = x.shape[0]
  7.             noise = torch.randn(noise_size, 1, 28, 28).requires_grad_().to(device)
复制代码


回复

使用道具 举报

6

主题

21

帖子

65

积分

注册会员

Rank: 2

积分
65
发表于 2018-10-15 14:43:04 | 显示全部楼层
其实 Pytorch 0.4.0 新增了一个 torch.device 属性,这样一来我们就可以更方便的指定模型和变量运行的设备, 并且新版本弃用了 torch.Variable 类,现在我们的数据只要转成 torch.Tensor 就可以跑了。
所以解决这个bug将
  1. x.requires_grad_().to(device)
复制代码

修改为:
  1. x.requires_grad_()
  2. x = x.float().to(device)
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表