深度学习与Pytorch入门实战(六)定义MLP&GPU加速&测试【数字识别实例】

本文介绍了如何在PyTorch中定义多层感知器(MLP)网络结构,包括使用nn.Linear和继承nn.Module两种方式,并详细讲解了GPU加速的实现方法。此外,还展示了多分类测试的应用,通过计算准确率评估模型性能。
摘要由CSDN通过智能技术生成

笔记摘抄

  • Pytorch定义网络结构识别手写数字,可以对网络中的参数w和b进行手动定义的(参考上一节)

  • 也可以直接用 nn.Linear 定义层的方式来定义

  • 更加方便的方式是直接继承 nn.Module 来定义自己的网络结构。

1. nn.Linear方式

import torch
import  torch.nn as nn
import  torch.nn.functional as F

# 模拟 一张 28*28 的图片摊平
x = torch.randn(1, 784)            #shape=[1,784]

# 定义三个全连接层
layer1 = nn.Linear(784, 200)         # (in, out)
layer2 = nn.Linear(200, 200)
layer3 = nn.Linear(200, 10)

x = layer1(x)                        # shape=[1,200]
x = F.relu(x, inplace=True)          # inplace=True在原对象基础上修改,可以节省内存
print(x.shape)

x = layer2(x)                        # shape=[1,200]
x = F.relu(x, inplace=True)

x = layer3(x)                        # shape=[1,10]
x = F.relu(x, inplace=True)

2. 继承nn.Module方式

import  torch
import  torch.nn as nn
import  torch.nn.functional as F
import  torch.optim as optim
from    torchvision import datasets, transforms

#超参数
batch_size=200
learning_rate=0.01
epochs=10

#获取训练数据
train_loader = torch.utils.data.DataLoader(
    datasets.MNIST('../data', train=True, download=True,          #train=True则得到的是训练集
                   transform=transforms.Compose([                 #transform进行数据预处理
                       transforms.ToTensor(),                     #转成Tensor类型的数据
                       transforms.Normalize((0.1307,), (0.3081,)) #进行数据标准化(减去均值除以方差)
                   ])),
    batch_size=batch_size, shuffle=True)                          #按batch_size分出一个batch维度在最前面,shuffle=True打乱顺序

#获取测试数据
test_loader = torch.utils.data.DataLoader(
    datasets.MNIST('../data', train=False, transform=transforms.Compose([
        transforms.ToTensor(),
        transforms.Normalize((0.1307,), (0.3081,))
    ])),
    batch_size=batch_size, shuffle=True)


class MLP(nn.Module):

    def __init__(self):
        super(MLP, self).__init__()
        
        # 定义网络的每一层,nn.ReLU可以换成其他激活函数,比如nn.LeakyReLU()
        self.model = nn.Sequential(     
      
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值