pytorch 使用gooleNet中的Inception模块训练损失不下降,使用显卡提示

Tensor for ‘out’ is on CPU, Tensor for argument #1 ‘self’ is on CPU, but expected them to be on GPU (while checking arguments for addmm)

检查发现是Net类中出现了问题。
错误模块代码

class Net(torch.nn.Module):
    def __init__(self):
        super(Net,self).__init__()
        self.conv1 = torch.nn.Conv2d(1,10,kernel_size=5)
        self.conv2 = torch.nn.Conv2d(88,20,kernel_size=5)

        self.inception1 = Inception_A(10)         #这里是Inception_A类,与本问题无关
        self.inception2 = Inception_A(20)
        self.mp = torch.nn.MaxPool2d(2)

       


    def forward(self,x):
            
        inside_batch = x.size(0)
        x = self.conv1(x)
        x = F.relu(x)
        x = self.mp(x)
        x = self.inception1(x)
        x = self.conv2(x)
        x = F.relu(x)
        x = self.inception2(x)
        x = self.mp(x)
        x = x.view(inside_batch,-1)
        """
        这里之所以这样写是,不想计算x.size(1)真实数据,如果把全连接层写在__init__中要计算一下,就是这样出错了
        """
        fc = torch.nn.Linear(x.size(1),10)      
        
        x = self.fc(x)            #fc 即full connect

        return  x

正确代码

class Net(torch.nn.Module):
    def __init__(self):
        super(Net,self).__init__()
        self.conv1 = torch.nn.Conv2d(1,10,kernel_size=5)

        self.conv2 = torch.nn.Conv2d(88,20,kernel_size=5)

        self.inception1 = Inception_A(10)
        self.inception2 = Inception_A(20)
        self.mp = torch.nn.MaxPool2d(2)
        """把下面这一句写上就好了,也能用gpu了,训练损失刚刚的下降"""
        self.fc = torch.nn.Linear(1408,10)   
        # self.cuda()


    def forward(self,x):
        # self.cuda()
        inside_batch = x.size(0)
        x = self.conv1(x)
        x = F.relu(x)
        x = self.mp(x)
        x = self.inception1(x)
        x = self.conv2(x)
        x = F.relu(x)
        x = self.inception2(x)
        x = self.mp(x)
        x = x.view(inside_batch,-1)
        x = self.fc(x)

        return  x

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用 AMD 显卡训练 PyTorch 模型之前,需要先确保以下几点: 1. 安装 AMD ROCm 软件包。该软件包是 AMD 显卡的驱动程序和运行时环境。可以在 AMD 官网上下载和安装。 2. 安装 PyTorch ROCm 版本。PyTorch ROCm 版本是针对 AMD 显卡的优化版本,可以提高模型训练的速度和效率。 3. 安装深度学习框架所需的依赖项。这些依赖项包括 CUDA、cuDNN 等,可以在 PyTorch 官网上找到安装指南。 安装完成后,可以按照以下步骤使用 AMD 显卡训练 PyTorch 模型: 1. 导入 PyTorch 和其他必要的库: ``` import torch import torch.nn as nn import torch.optim as optim ``` 2. 定义模型和损失函数: ``` class Model(nn.Module): def __init__(self): super(Model, self).__init__() self.fc1 = nn.Linear(10, 5) self.fc2 = nn.Linear(5, 2) def forward(self, x): x = self.fc1(x) x = nn.ReLU()(x) x = self.fc2(x) return x model = Model() criterion = nn.CrossEntropyLoss() ``` 3. 定义优化器: ``` optimizer = optim.Adam(model.parameters(), lr=0.01) ``` 4. 加载数据集: ``` train_dataset = ... train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=32, shuffle=True) ``` 5. 训练模型: ``` for epoch in range(10): for i, data in enumerate(train_loader): inputs, labels = data optimizer.zero_grad() outputs = model(inputs) loss = criterion(outputs, labels) loss.backward() optimizer.step() ``` 这是一个简单的 PyTorch 模型训练示例。在使用 AMD 显卡训练时,需要将代码CUDA 相关函数替换为 ROCm 相关函数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值