基于GPU的Pytorch——CNN实现MNIST数据识别

本文介绍如何利用GPU加速Pytorch中的CNN模型训练,针对MNIST数据集,通过将网络结构和数据集转移到GPU上,显著减少了训练时间,解决了CPU训练效率低的问题。
摘要由CSDN通过智能技术生成

CNN实现MNIST数据集分类时,发现CPU训练特别慢,20个epoch需要半个多小时,故修改为GPU训练,训练时长明显缩短。

修改如下:

  1. 需要把网络结构移到GPU上:

    model = Net()
    if torch.cuda.is_available():
        print("The model is using GPU")
        model = model.cuda()
    
  2. 训练数据集和测试数据集移到GPU上:

    for i, data in enumerate(train_loader):
            # 获得数据和对应的标签
            inputs, labels = data
            # 获得模型预测结果,(64,10)
            inputs = inputs.cuda()
            labels = labels.cuda()
            out = model(inputs)
            # 交叉熵代价函数out(batch,C),labels(batch)
            loss = entropy_loss(out, labels)
    

    注意: 刚开始由于只修改了数据,未修改标签,导致报错:
    RuntimeError: Expected object of device type cuda but got device type cpu for argument #2 ‘mat1’ in call to _th_addmm

完整代码如下——使用工具:jupyter notebook

#%%
import torch
import torch.nn as nn
import torch.optim as optim
from torchvision import datasets, transforms
from torch.utils.data import DataLoader
import  matplotlib.pyplot as plt

#%%

# 下载训练集
train_dataset = datasets.MNIST(root='./',
                train=True,
                transform=transforms.ToTensor(),
                download=False)
# 下载测试集
test_dataset = datasets.MNIST(root='./',
               train=False,
               transform=transforms.ToTensor(),
               download
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值