深度学习BP手写识别MINIST

在BP手写识别MINIST中,存在很多杂乱的知识点,很多知识点大家已经了解,就不会赘述它,我所认为的难理解或者不熟悉的知识点在每个部分都会注释出来,如果大家的基础知识比较牢固,可以直接跳过去看完整代码及运算结果。

简介

MINIST数据集即手写数字数据集,共有70000张图像,其中训练集60000张,测试集10000张。

所有图像都是28×28的灰度图像,每张图像包含一个手写数字

共10个类别,每个类别代表0~9之间的一个数字,每张图像只有一个类别。

分部分描述代码

导入库

import torch.nn
import torchvision
import torchvision.transforms as transforms
import matplotlib.pyplot as plt
import matplotlib
#设置字体为楷体
matplotlib.rcParams['font.sans-serif'] = ['KaiTi'

其中,torchvision是计算机的视觉库

torchvision.transforms是数据转换模块

构建BP网络模型

class BPnetwork(torch.nn.Module):
    def __init__(self):
        super(BPnetwork, self).__init__()  # 调用父类初始化方法
        self.linear1 = torch.nn.Linear(28 * 28, 128)
        self.ReLU1 = torch.nn.ReLU()

        self.linear2 = torch.nn.Linear(128, 64)
        self.ReLU2 = torch.nn.ReLU()

        self.linear3 = torch.nn.Linear(64, 10)
        self.softmax = torch.nn.LogSoftmax(dim=1)

    def forward(self, x):
        x=x.reshape(x.shape[0],-1)
        x = self.linear1(x)
        x = self.ReLU1(x)
        x = self.linear2(x)
        x = self.ReLU2(x)
        x = self.linear3(x)
        x = self.softmax(x)
        return x

其中,输入层为图片的大小,即28*28

self.linear为隐藏层的定义,linear1-linear2分别表示两个隐藏层,而linear3为输出层

self.ReLu为使用ReLu激活函数来将其激活

最后,使用LogSoftmax来进行归一化处理

我们先来复习一下Softmax

而logsoftmax与softmax有什么

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值