飞浆 | PaddlePaddle框架入门之数字识别

这篇具有很好参考价值的文章主要介绍了飞浆 | PaddlePaddle框架入门之数字识别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

import paddle
import paddle.fluid as fluid
from paddle.vision.transforms import Compose, Normalize
from paddle.vision.datasets import MNIST
from visualdl import LogWriter

# 定义模型类
class MyModel(paddle.nn.Layer):
    def __init__(self):
        super(MyModel, self).__init__()
        self.conv1 = paddle.nn.Conv2D(in_channels=1, out_channels=16, kernel_size=3, stride=1, padding=1)
        self.pool1 = paddle.nn.MaxPool2D(kernel_size=2, stride=2)
        self.conv2 = paddle.nn.Conv2D(in_channels=16, out_channels=32, kernel_size=3, stride=1, padding=1)
        self.pool2 = paddle.nn.MaxPool2D(kernel_size=2, stride=2)
        self.flatten = paddle.nn.Flatten()
        self.fc = paddle.nn.Linear(in_features=32*7*7, out_features=10)

    def forward(self, x):
        x = self.conv1(x)
        x = paddle.nn.functional.relu(x)
        x = self.pool1(x)
        x = self.conv2(x)
        x = paddle.nn.functional.relu(x)
        x = self.pool2(x)
        x = self.flatten(x)
        x = self.fc(x)
        return x

# 数据预处理
transform = Compose([Normalize(mean=[127.5], std=[127.5], data_format='CHW')])

# 数据加载
train_dataset = MNIST(mode='train', transform=transform)
train_loader = paddle.io.DataLoader(train_dataset, batch_size=32, shuffle=True)
test_dataset = MNIST(mode='test', transform=transform)
test_loader = paddle.io.DataLoader(test_dataset, batch_size=32, shuffle=False)

# 创建VisualDL日志写入器
log_writer = LogWriter('./visualdl_logs')

# 定义模型训练过程
def train(model, epoch):
    model.train()
    for batch_id, data in enumerate(train_loader()):
        images, labels = data
        labels = paddle.squeeze(labels)
        predicts = model(images)
        loss = paddle.nn.functional.cross_entropy(predicts, labels)
        avg_loss = paddle.mean(loss)

        if batch_id % 100 == 0:
            print("epoch: {}, batch_id: {}, loss is: {}".format(epoch, batch_id, avg_loss.numpy()))

        avg_loss.backward()
        optimizer.step()
        optimizer.clear_grad()

        # 记录训练日志到VisualDL
        log_writer.add_scalar(tag="train_loss", step=batch_id, value=avg_loss.numpy())

# 创建模型
model = MyModel()

# 定义优化器
optimizer = paddle.optimizer.Adam(learning_rate=0.001, parameters=model.parameters())

# 训练模型并使用VisualDL进行可视化
with fluid.dygraph.guard():
    for epoch in range(10):
        train(model, epoch)

# 保存VisualDL日志
log_writer.close()

这个程序的作用是使用PaddlePaddle框架实现一个简单的手写数字识别模型,并利用VisualDL库进行模型训练过程的可视化。

程序的主要步骤如下:

  1. 导入必要的库和模块,包括PaddlePaddle、PaddleVision、VisualDL等。

  2. 定义一个自定义的模型类MyModel,继承自paddle.nn.Layer。这个模型包括了卷积层、池化层、全连接层等,用于提取图像特征并进行分类。

  3. 进行数据预处理。使用Compose函数将数据的像素值进行归一化。

  4. 加载训练和测试数据集。使用MNIST数据集类从PaddleVision中加载手写数字数据集,并使用DataLoader创建数据加载器,指定批量大小和是否打乱数据。

  5. 创建VisualDL日志写入器LogWriter,用于记录训练过程中的损失值。

  6. 定义模型训练函数train,其中使用模型前向传播计算预测结果,计算损失值,进行反向传播更新模型参数,并将训练过程中的损失值记录到VisualDL中。

  7. 创建模型实例model和优化器optimizer

  8. 使用fluid.dygraph.guard()进入动态图模式,并使用循环进行多个epoch的训练。每个epoch调用train函数进行模型训练。

  9. 训练结束后关闭VisualDL日志写入器。

总结来说,该程序的作用是实现手写数字识别模型的训练过程,并通过VisualDL可视化工具记录训练过程中的损失值,以便更直观地观察和分析模型的训练效果。文章来源地址https://www.toymoban.com/news/detail-461815.html

到了这里,关于飞浆 | PaddlePaddle框架入门之数字识别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Python_Opencv图像处理框架】信用卡数字识别项目

    本篇文章是opencv学习的第六篇文章,前面主要讲解了对图像的一些基本操作,这篇文章我们就开始大展身手,将前面所学的基础操作活学活用。既能复习基础操作,又能学到一些新的知识。作为初学者,我尽己所能,但仍会存在疏漏的地方,希望各位看官不吝指正🥰 我们通

    2024年02月03日
    浏览(51)
  • 基于PaddlePaddle实现的声纹识别系统

    本项目使用了EcapaTdnn、ResNetSE、ERes2Net、CAM++等多种先进的声纹识别模型,不排除以后会支持更多模型,同时本项目也支持了MelSpectrogram、Spectrogram、MFCC、Fbank等多种数据预处理方法,使用了ArcFace Loss,ArcFace loss:Additive Angular Margin Loss(加性角度间隔损失函数),对应项目中的

    2024年02月12日
    浏览(40)
  • Pytorch-以数字识别更好地入门深度学习

    目录 一、数据介绍 二、下载数据  三、可视化数据 四、模型构建 五、模型训练 六、模型预测 一、数据介绍 MNIST数据集是深度学习入门的经典案例,因为它具有以下优点: 1. 数据量小,计算速度快。MNIST数据集包含60000个训练样本和10000个测试样本,每张图像的大小为28x28像

    2024年02月11日
    浏览(37)
  • 百度飞桨(PaddlePaddle) - PaddleOCR 文字识别简单使用

    百度飞桨(PaddlePaddle)安装 OCR 文字检测(Differentiable Binarization --- DB) 百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 预测部署简介与总览 百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 Paddle Inference 模型推理(离线部署) 百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 基于

    2024年02月04日
    浏览(51)
  • pytorch 入门 (三)案例一:mnist手写数字识别

    本文为🔗小白入门Pytorch内部限免文章 🍨 本文为🔗小白入门Pytorch中的学习记录博客 🍦 参考文章:【小白入门Pytorch】mnist手写数字识别 🍖 原作者:K同学啊 ​ 如果设备上支持GPU就使用GPU,否则使用CPU 使用dataset下载MNIST数据集,并划分好训练集与测试集 使用dataloader加载数

    2024年02月07日
    浏览(46)
  • Kaggle入门赛-Digit Recognizer(手写数字识别)

    Kaggle入门赛-手写数字识别所使用的数据集MNIST是计算机视觉上的“Hello world”数据集。这个经典的手写图像数据集一直作为基准分类算法的基础。随着新的机器学习技术的出现,MNIST仍然是研究人员和学习者的可靠资源。 本文所介绍的算法通过使用一个多层感知机来完成手写

    2024年02月09日
    浏览(67)
  • 从手写数字识别入门深度学习丨MNIST数据集详解

    就像无数人从敲下“Hello World”开始代码之旅一样,许多研究员从“MNIST数据集”开启了人工智能的探索之路。 MNIST数据集(Mixed National Institute of Standards and Technology database)是一个用来训练各种图像处理系统的二进制图像数据集,广泛应用于机器学习中的训练和测试。 作为一

    2024年02月03日
    浏览(43)
  • 机器学习从入门到放弃:硬train一发手写数字识别

    一、前言 前面我们了解了关于机器学习使用到的数学基础和内部原理,这一次就来动手使用 pytorch 来实现一个简单的神经网络工程,用来识别手写数字的项目。自己动手后会发现,框架里已经帮你实现了大部分的数学底层逻辑,例如数据集的预处理,梯度下降等等,所以只要

    2024年02月06日
    浏览(66)
  • 卷积神经网络(CNN)入门:使用Python实现手写数字识别

    在上一篇文章中,我们介绍了如何使用Python实现一个简单的前馈神经网络。本文将重点介绍卷积神经网络(CNN),这是一种在计算机视觉任务中表现优异的深度学习模型。我们将从卷积神经网络的基本原理开始,介绍卷积层、池化层和全连接层等概念,然后使用Python和Keras库

    2023年04月15日
    浏览(51)
  • 吴恩达471机器学习入门课程2第2周——手写数字识别(0到9)

    使用神经网络来识别手写数字0-9。 本周,引入了一种新的激活函数,即修正线性单元(ReLU)。 a = m a x ( 0 , z )  ReLU函数 a = max(0, z) quadquadtext{ ReLU函数} a = ma x ( 0 , z )  ReLU 函数 讲座中的例子展示了ReLU的应用。在这个例子中,上下文感知能力不是二进制的,而是具有连续的

    2024年02月09日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包