pytorch rnn 实现手写字体识别

PyTorch手写字体识别 pytorch 阅读详情

构建 RNN 代码


import  torch
import   torch.nn  as  nn
from  torch.autograd  import  Variable

import  torch.utils.data  as  Data

import   torchvision

import   matplotlib.pyplot  as  plt


torch.manual_seed(1)

#batch size
BATCH_SIZE=50
#学习率
LR= 0.001
DOWNLOAD=False
#是否训练
TRAIN =False



class   RNN(nn.Module):
    def __init__(self):
        super(RNN,self).__init__()


        '''
        input_size:输入特征的数目
        hidden_size:隐层的特征数目
        num_layers:这个是模型集成的LSTM的个数 记住这里是模型中有多少个LSTM摞起来 一般默认就1个
        #batch_first: 输入数据的size为[batch_size, time_step, input_size]还是[time_step, batch_size, input_size]
       '''
        self.rnn= nn.LSTM(
            input_size=28,
            hidden_size=64,
            num_layers=3,
            batch_first=True #batch_first: 输入数据的size为[batch_size, time_step, input_size]还是[time_step, batch_size, input_size]

        )

        self.out = nn.Linear(64,10)

        self.optimizer = torch.optim.Adam(self.parameters(),lr=LR)
        self.lossFunc= nn.CrossEntropyLoss()


    def forward(self,x):

        #x [ batch,28,28]

        r_out ,(h_n,h_c)= self.rnn(x,None)

        #r_out [50,28,64]   h_n=[1,50,64]  h_c =[1,50,64]

        #r_out  表示 每一次输入  28 个像素  输入了  50* 28 次

        #h_n 表示    每 28*28 为一次 记录  隐藏层 为 64 所以为  50,64  每28*28为一个记录 参数

        print(r_out.size(), h_n.size(),h_c.size())

        r_out = self.out(r_out[:,-1,:])

        return  r_out


    def  lossFunction(self,predict ,batchY):
        loss = self.lossFunc(predict,batchY)
        self.optimizer.zero_grad()
        loss.backward()
        print("loss==",loss.data)
        self.optimizer.step()

加载数据

tranData =  torchvision.datasets.MNIST(
    root="d:/mnist/",
    train=True,
    transform=torchvision.transforms.ToTensor(),
    download=DOWNLOAD

)

testData = torchvision.datasets.MNIST(
    root="d:/mnist/",
    train=False
)

trainLoader =  Data.DataLoader(dataset=tranData,
                               batch_size=BATCH_SIZE,
                               shuffle=True
                               )

# 为了节约时间, 我们测试时只测试前2000个
# shape from (2000, 28, 28) to (2000, 1, 28, 28), value in range(0,1)
test_x = Variable(torch.unsqueeze(testData.test_data, dim=1), volatile=True).type(torch.FloatTensor)[:2000]/255.
test_y = testData.test_labels[:2000]

使用RNN 训练 和测试数据


#构造RNN
myRNN= RNN()


#训练数据
if(TRAIN):


    for  epoch in  range(3):
      for  step  ,(x,y) in enumerate(trainLoader):
            trainX = Variable(x.view(-1,28,28))
            print("trainX==",trainX.size())
            tranY = Variable(y)
            predict= myRNN(trainX)
            print("predict==",predict)
            myRNN.lossFunction(predict,tranY)

    torch.save(myRNN.state_dict(), "d:/mnist/rnn.pkl")
else:

    myRNN.load_state_dict(torch.load("d:/mnist/rnn.pkl"))




#测试数据
testOut = myRNN(test_x[:20].view(-1,28,28))

print("testOut==",testOut.size())
#预测值
testPredict = torch.max(testOut,1)[1]

print("testPredict==", testPredict.size())
print(testPredict,test_y[:20])

深度学习手写识别实战:CNN、RNN与CTC原理及PyTorch实现 光学字符识别(OCR)是人工智能领域的基础技术,而手写识别因其字形多变、字符粘连和笔画随意性,长期被视为最具挑战性的子问题。传统方法依赖人工特征设计与字符切分,泛化能力有限;深度学习的引入从根本上改变了这一局面。卷积神经网络(CNN)自动提取视觉特征,循环神经网络(RNN)建模序列上下文,CTC损失函数则巧妙解决输入输出长度不对齐的难题,三者结合的CRNN架构成为端到端手写识别的经典范式。该技术广泛应用于票据识别、笔记电子化、古籍数字化等场景。本文以技术演变为线索,梳理核心原理,并基于PyTorch提供从手 阅读详情

相关推荐

【玩转深度学习】手把手带你实战MNIST字体识别【LeNet网络】(PyTorch神经网络)

这篇实战指南将带领读者从零实现经典LeNet卷积神经网络,完成MNIST手写数字识别任务。文章详解LeNet的卷积-池化-全连接架构设计,结合PyTorch框架演示数据集加载、网络搭建、训练优化全流程,并可视化特征图与训练曲线。通过对比不同超参数对识别准确率的影响,读者不仅能掌握图像分类核心技能,还能深入理解卷积神经网络的工作原理。配套可运行的Jupyter代码,特别适合深度学习新手快速入门计算机视觉领域。

十二月的猫 2624

【机器学习】PyTorch-MNIST-手写字识别

注意:本代码需要安装PyTorch未安装请看之前的文章https://blog.youkuaiyun.com/qq_39583774/article/details/132070870MNIST(Modified National Institute of Standards and Technology)是一个常用于机器学习和计算机视觉领域的数据集,用于手写数字识别。它包含了一系列28x28像素大小的灰度图像,每个图像都表示了一个手写的数字(0到9之间)。

信安是不可或缺的一部分! 5594

每天五分钟深度学习框架pytorch:搭建LSTM完成手写字体识别任务?

前面我们学习了LSTM的搭建,我们也学习过很多卷积神经网络关于手写字体的识别,本文我们使用LSTM来完成手写字体的识别。

huanfeng_AI的博客 421

【Pytorch-手写字体识别】手写字体识别项目

Pytorch进行手写数字识别

weixin_71003977的博客 3779

pytorch版本手写体识别MNIST.zip

手写体识别数据!应用于pytorch版本的,pytorch版本1.31,代码在博客中,有问题欢迎留言 python版本3.74,代码软件pycharm

pytorch cnn 识别手写的字实现自建图片数据

主要介绍了pytorch cnn 识别手写的字实现自建图片数据,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

pytorch图像识别之手写字识别

一个简单的深度学习案例

qq_54127343的博客 2862

akshare 布林通道策略

import datetime import pandas as pd import backtrader as bt import matplotlib.pyplot as plt from datetime import datetime import matplotlib import akshare as ak %matplotlib inline class Boll_strategy(bt.Strategy): #自定义参数,每次买入1800手 params=(('size'.

qq_26742269的博客 5336

PyTorch——手写数字识别

目录PyTorch 学习 —— 手写数字识别Ⅰ. 数据读取器1. 训练集2. 验证集和测试集Ⅱ. 搭建网络Ⅲ. 模型训练1. 开始训练2. 模型验证Ⅲ. 模型测试Ⅳ. 绘制图像Ⅴ. 完整代码 PyTorch 学习 —— 手写数字识别   MNIST 数据集,其包含70000 个28×28 的手写数字的数据集,其中又分为60000 个训练样本与10000 个测试样本。 Ⅰ. 数据读取器 import torch from torch import nn from torch import optim fro

原谅我这一生不羁放纵爱自由 2万+

STM32F407 FreeRTOS+LVGL移植实战:从驱动适配到性能优化

本文详细介绍了在STM32F407开发板上移植FreeRTOS和LVGL的实战经验,涵盖硬件准备、驱动适配、性能优化等关键步骤。通过TFTLCD屏幕驱动优化、DMA加速和任务优先级调整,显著提升界面流畅度,为嵌入式GUI开发提供实用解决方案。

weixin_29190651的博客 632

对工时评估的思考:当AI颠覆了coding效率

在AI时代,“人日”作为软件工时度量衡已然失效。开发的价值核心正从“编码实现”转向“深度思考”与“精准沟通”——即如何将人类的模糊需求精确地传达给AI。当最有价值的“思想工作”变得最难量化时,传统的项目管理范式随之动摇。我们必须超越对过程的算计,开始探索衡量思想、沟通与业务价值的新标尺。

架构师刘7的博客 1017

PyTorch 使用RNN实现MNIST手写字体识别

此处使用普通的RNN 推荐一个RNN入门资料:https://zhuanlan.zhihu.com/p/28054589 28*28的图片,每个输入序列长度(seq_len)为28,每个输入的元素维度(input_size)为28,将一张图片的分为28列,为长度28的序列,序列中每个元素为28个元素(即每一列的像素)。 注意,如果batch_first设置为1,则输出维度out:   bat...

Coding 4210

GPU 资源池化云平台解决方案​

定义与特点Kubernetes是一个开源的容器编排和管理平台,通过提供自动化和声明式的方式来部署、扩展、维护和运行应用程序。它支持跨多个主机和集群部署容器,确保应用程序的高可用性和可扩展性。Kubernetes提供了丰富的功能和插件,允许用户根据自己的需求进行定制和扩展。架构与组件控制平面(Control Plane):负责集群的决策(如调度)和集群状态的检测与响应。

ZhangJiqun&191cm&85kg 1161

基于深度学习框架pytorch搭建循环神经网络LSTM完成手写字体识别

循环神经网络 在深度学习领域,循环神经网络具有记忆能力,它可以根据以前的记忆来处理新的任务。记忆力在很有任务上是很有用的,比如在一场电影中推断下一个时间点的场景,这个时候仅依赖于现在的情景并不够,还需要依赖于前面发生的情节,对于这样一些不仅依赖于当前情况,还依赖于过去情况的问题,传统的神经网络结构不能很好地处理,而基于记忆的网络模型却能够完成这个任务。 LSTM LSTM是循环神经网络的变式,它能够很好的解决长时间依赖的问题,这种循环网络结构非常流行,使用很广泛。LSTM使用三个门来控制,这三个门分别是输

huanfeng_AI的博客 1557

深入探讨:StoreKit 2的交易处理与收据验证

iOS应用开发中,StoreKit 2带来收据处理和交易验证的新变化。本文通过实例分析,对比传统StoreKit与StoreKit 2的差异,指出直接访问sandboxReceipt文件可能引发错误。解决方案是使用Transaction对象和SKReceiptRefreshRequest,详细介绍了如何初始化ReceiptLoader、处理交易更新及验证收据的完整流程,帮助开发者适应新框架,确保购买流程安全可靠。

m0_74337424的博客 357

Claude Code 100个真实案例 - 用AI批量清洗Excel脏数据(10万行3分钟搞定)

本案例展示如何使用 Claude Code 搭建一个强大的 Excel 数据清洗工具。支持自动检测和处理空值、重复行、格式错误、异常值等常见脏数据问题,批量处理10万行数据只需3分钟。

yueyeguzhuo的专栏 37

05:pytorch RNN LSTM MN 实现手写字体识别

weixin_44953928的博客 597

【Word提效 No.010】使用AI一键复制格式刷应用格式

本文介绍利用AI工具WorkBuddy实现Word文档格式批量复制的自动化解决方案。通过简单指令即可将指定段落的格式一键应用到多个目标段落,解决传统格式刷操作繁琐、易出错的问题。方案包含三步操作:准备文档、输入指令模板、验收效果,并提供多种场景的现成指令示例。该工具支持字体、段落等格式属性的批量复制,且不会覆盖原文件,适用于论文、手册等文档的格式统一需求。

u011186532的专栏 77

PyTorch RNN 实战案例_MNIST手写字体识别

PyTorch RNN 实战案例_MNIST手写字体识别详细版本

一曲无痕奈何 546

【算能】TPU 指令集架构深度解析

TPU指令集以领域专用性与数据流驱动为核心,通过精简指令集、硬件固化逻辑与高并行架构,实现张量计算的极致性能。开发者通常无需直接编写指令,但理解其设计原理对性能调优(如内存布局优化、指令调度)至关重要。算能TPU通过开放指令描述与编译器工具链,为垂直行业提供了更高灵活性的定制空间,而谷歌TPU则依赖编译器的全自动化优化,更适合大规模标准模型部署。未来,随着稀疏计算、光子计算等技术的引入,TPU指令集将进一步向高能效与高泛化性演进。

浩瀚之水的专栏 1182

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

《深度学习之PyTorch实战计算机视觉》学习笔记(11)

这部分是利用pytorch 进行实战,利用RNN(循环神经网络)来实现手写字体的识别问题 代码基于python3.7, pytorch 1.0,cuda 10.0 . PyTorch之循环神经网络实战 利用循环神经网络中的LSTM搭建网络实现手写字体的识别 import torch import torchvision from torchvision import datasets, trans...

weixin_40017911的博客 1461

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

PyLaia:基于PyTorch的手写文档分析深度学习工具包

PyLaia:基于PyTorch的手写文档分析深度学习工具包 项目介绍 PyLaia 是一个专注于自动文本识别(ATR)和关键词定位(KWS)的开源工具包,由模式识别与人类语言技术(PRHLT)研究中心的成员开发。该工具包设计灵活,设备无关,支持广泛实验,包括训练和推断基于卷积神经网络(CNN)和循环神经网络(RNN)的模型。PyLaia是原Laia项目的升级版,旨在利用PyTorch框架的先进性...

gitblog_00121的博客 817

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

循环神经网络RNN与LSTM学习(一)

文章目录1 word2vec1.1 理解torch.nn.Embedding2 RNN 的梯度计算2.1 什么是梯度爆炸2.2 什么是梯度消失3 LSTM4 常见的面试题——LSTM是如何解决RNN梯度消失和梯度爆炸问题? 1 word2vec 1.1 理解torch.nn.Embedding 全部参数如下: torch.nn.Embedding(num_embeddings: int, embedding_dim: int, padding_idx: Optional[int] = None,

#仙女不扎马尾#的博客 860

基于PyTorch的LSTM长短时记忆网络实现MNIST手写数字

本篇博客主要介绍在PyTorch框架下,基于LSTM实现手写数字的识别。在介绍LSTM长短时记忆网路之前,我先介绍一下RNN(recurrent neural network)循环神经网络.RNN是一种用来处理序列数据的神经网络,序列数据包括我们说话的语音、一段文字等等。它的出现是为了让网络自己有记忆能力,每个网络模块把信息传给下一个模块,它的网络结构如下:对于输入的一段序列数据(X1,X2,X3...

Jaster_wisdom的专栏 9152

基于GAN的手写字体生成:从原理到PyTorch实战

生成式对抗网络(GAN)是深度学习在图像生成领域的核心技术之一,其通过生成器与判别器的对抗博弈,学习数据分布并创造新样本。该技术在数字艺术与创意设计领域展现出巨大价值,尤其在字体设计与个性化内容生成方面。本文聚焦于利用GAN进行手写字体生成的工程实践,详细拆解了从数据预处理、DCGAN模型构建到训练优化的完整流程。通过PyTorch框架实现,读者可掌握如何将个人笔迹转化为数字字体,并了解训练稳定性控制、损失函数设计等关键技巧,为AI驱动的创意应用开发提供实用参考。

weixin_34209851的博客 371

PyTorch手写文字识别实战:从IAM数据集到CTC端到端部署

手写文字识别(HWR)是光学字符识别(OCR)中的典型窄域任务,其核心挑战在于字符空间不确定性高、连笔粘连普遍、图像质量波动大。不同于印刷体OCR依赖二值化与字符切分,现代HWR普遍采用端到端序列建模,以CTC(Connectionist Temporal Classification)损失函数为核心,实现图像到字符序列的直接映射。该技术依托CNN提取局部笔画特征,RNN建模时序依赖,并通过动态规划自动处理对齐模糊性,显著提升对手写形变、倾斜与涂改的鲁棒性。在工程落地中,PyTorch凭借动态图调试能力、原

图灵教育官方博客 511
上一篇: LSTM 图解
下一篇: faster rcnn 原理
ithinking110
博客等级 码龄14年 54粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值