基于pytorch的手写数字识别,算法优化(动量Momentum,梯度下降SGD)GPU加速

该博客通过对比分析了在PyTorch中使用动量优化算法(Momentum)与标准梯度下降(SGD)在手写数字识别任务上的效果,发现使用Momentum的SGD训练速度更快,能更高效地找到极值点。并利用GPU加速了模型训练过程。
摘要由CSDN通过智能技术生成

导入相关模块

import numpy as np
import torch
# 导入 pytorch 内置的 mnist 数据
from torchvision.datasets import mnist 
# 导入预处理模块
import torchvision.transforms as transforms
from torch.utils.data import DataLoader
# 导入nn及优化器
from torch import nn
import torch.optim as optim
import torch.nn.functional as F
​
# 数据可视化
import matplotlib.pyplot as plt
%matplotlib inline

定义参数

# 每次训练数据数量
train_batch_size = 64
# 每次测试数据数量
test_batch_size = 128
# 学习率
learning_rate = 0.01
# 训练轮次
num_epoches = 8
# 动量参数
momentum = 0.9

数据预处理

# 定义预处理函数,这些预处理依次放在Compose函数中  
# Normalize([0.5],[0.5])对张量进行归一化,这里两个0.5分别表示对张量进行归一化的全局平均值和方差。
transform = transforms.Compose([transforms.ToTensor(),transforms.Normalize([0.5],[0.5])])
# 下载数据,并对数据进行预处理  download参数控制是否需要下载,如果./data目录下已有MNIST,可选择False;
train_dataset = mnist.MNIST('./data',train=True,transform=transform,download=True)
test_dataset = mnist.MNIST('./data',train=False,transform=transform,download=True)
# dataloader是一个可迭代对象,可以和迭代器一样使用  用DataLoader得到生成器,这可节省内存
train_loader = DataLoader(train_dataset,batch_size=train_batch_size,shuffle=True)
test_loader = DataLoader(test_dataset,batch_size=test_batch_size,shuffle=False)

构建模型

class Net(nn.Module):
    """使用sequential构建网络,Sequential()函数的功能是将网络的层组合到一起"""
    def __in
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鼎上西瓜刀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值