程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了RuntimeError:输入类型 (torch.FloatTensor) 和权重类型 (torch.cuda.FloatTensor) 应该相同 - PyTorch大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决RuntimeError:输入类型 (torch.FloatTensor) 和权重类型 (torch.cuda.FloatTensor) 应该相同 - PyTorch?

开发过程中遇到RuntimeError:输入类型 (torch.FloatTensor) 和权重类型 (torch.cuda.FloatTensor) 应该相同 - PyTorch的问题如何解决?下面主要结合日常开发的经验,给出你关于RuntimeError:输入类型 (torch.FloatTensor) 和权重类型 (torch.cuda.FloatTensor) 应该相同 - PyTorch的解决方法建议,希望对你解决RuntimeError:输入类型 (torch.FloatTensor) 和权重类型 (torch.cuda.FloatTensor) 应该相同 - PyTorch有所启发或帮助;

我正在尝试通过以下方式将我的模式和数据、图像和标签推送到 GPU 上运行:

device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")

关注:

count = 0
loss_List = []
iteration_List = []
accuracy_List = []
epochs = 30

for epoch in range(epochs):
    for i,(images,labels) in enumerate(Trainloader):
            net = net.to(devicE)
            images.to(devicE)
            labels.to(devicE)

            optimizer.zero_grad()
            outputs = net(images)
            loss = criterion(outputs,labels)
            loss.BACkWARD()
            optimizer.step()

            count += 1

            if count % 50 == 0:
                correct = 0
                @R_590_10586@l = 0

                for i,labels) in enumerate(testloader):
                    images.to(devicE)
                    labels.to(devicE)

                    outputs = net(images)
                    preDicted = torch.max(outputs.data,1)[1]
                    @R_590_10586@l += len(labels)
                    correct += (preDicted == labels).sum()
                accuracy = 100 * correct / float(@R_590_10586@l)

                loss_List.append(loss.data)
                iteration_List.append(count)
                accuracy_List.append(accuracy)

                if count % 500 == 0:
                    print("Iteration: {} Loss: {} Accuracy: {} %".format(count,loss.data,accuracy))

我明确地将我的模型和数据推送到设备,但是我遇到了错误:

RuntimeError                              TraceBACk (most recent call last)
<ipython-input-341-361b906da73d> in <module>()
     12 
     13             optimizer.zero_grad()
---> 14             outputs = net(images)
     15             loss = criterion(outputs,labels)
     16             loss.BACkWARD()

4 frames
/usr/local/lib/python3.7/dist-packages/torch/nn/modules/conv.py in _conv_forWARD(self,input,weight,bias)
    394                             _pair(0),self.dilation,self.groups)
    395         return F.conv2d(input,bias,self.StriDe,--> 396                         self.padding,self.groups)
    397 
    398     def forWARD(self,input: Tensor) -> Tensor:

RuntimeError: input type (torch.floatTensor) and weight type (torch.cuda.floatTensor) should be the same

我觉得将模型和数据都推送到 GPU 是我在做正确的事情,但我不知道为什么它不起作用。有人知道出了什么问题吗?提前致谢。

解决方法

您的权重保存在 gpu 上,但您的输入保存在 cpu 上。您可以通过以下方式更改:images.cuda()

大佬总结

以上是大佬教程为你收集整理的RuntimeError:输入类型 (torch.FloatTensor) 和权重类型 (torch.cuda.FloatTensor) 应该相同 - PyTorch全部内容,希望文章能够帮你解决RuntimeError:输入类型 (torch.FloatTensor) 和权重类型 (torch.cuda.FloatTensor) 应该相同 - PyTorch所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。