利用pytorch手写数字识别

使用PyTorch进行手写数字识别通常涉及以下步骤:

  1. 准备数据集:MNIST是一个常用的手写数字数据集,它包含了0到9的手写数字图片。PyTorch提供了直接下载MNIST数据集的工具。

  2. 定义模型:定义一个神经网络模型来对数字图片进行分类。

  3. 训练模型:使用MNIST训练数据来训练模型。

  4. 评估模型:使用MNIST测试数据来评估模型的性能。

下面是一个简单的例子,展示如何使用PyTorch进行手写数字识别:

import torch
import torch.nn as nn
import torch.optim as optim
from torchvision import datasets, transforms
from torch.utils.data import DataLoader

# 1. 准备数据集
batch_size = 64
transform = transforms.Compose([
    transforms.ToTensor(),
    transforms.Normalize((0.1307,), (0.3081,))
])

train_dataset = datasets.MNIST(root='./data', train=True, download=True, transform=transform)
train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True)

test_dataset = datasets.MNIST(root='./data', train=False, download=True, transform=transform)
test_loader = DataLoader(test_dataset, batch_size=batch_size, shuffle=False)

# 2. 定义模型
class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.fc1 = nn.Linear(28*28, 500)
        self.fc2 = nn.Linear(500, 10)

    def forward(self, x):
        x = x.view(-1, 28*28)
        x = torch.relu(self.fc1(x))
        x = self.fc2(x)
        return x

model = Net()

# 3. 训练模型
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.9)

num_epochs = 5
for epoch in range(num_epochs):
    model.train()
    running_loss = 0.0
    for batch_idx, (inputs, targets) in enumerate(train_loader):
        optimizer.zero_grad()
        outputs = model(inputs)
        loss = criterion(outputs, targets)
        loss.backward()
        optimizer.step()
        running_loss += loss.item()
    print(f'Epoch {epoch+1}, Loss: {running_loss/len(train_loader)}')

# 4. 评估模型
model.eval()
total_correct = 0
with torch.no_grad():
    for inputs, targets in test_loader:
        outputs = model(inputs)
        _, predicted = torch.max(outputs, 1)
        total_correct += (predicted == targets).sum().item()

print(f'Test accuracy: {total_correct/len(test_dataset)*100:.2f}%')

在这个例子中,我们首先定义了数据转换和加载器。然后,我们定义了一个简单的全连接神经网络模型。接着,我们使用交叉熵损失函数和随机梯度下降优化器来训练模型。最后,我们在测试集上评估了模型的性能。

请注意,这只是一个简单的例子。在实际应用中,你可能需要更复杂的网络结构、数据增强、正则化等技术来提高模型的性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/497220.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java学习之方法

目录 方法 方法声明格式: 调用方式: 详细说明 示例 --方法的声明及调用 语句块 练习 方法的重载(overload) 构成条件 示例 --方法重载 递归结构 缺陷 方法 方法(method):一段用于完成特定功能的代码片段,类似于其他语…

Redis命令-List命令

4.6 Redis命令-List命令 Redis中的List类型与Java中的LinkedList类似,可以看做是一个双向链表结构。既可以支持正向检索和也可以支持反向检索。 特征也与LinkedList类似: 有序元素可以重复插入和删除快查询速度一般 常用来存储一个有序数据&#xff…

算法系列--动态规划--背包问题(2)--01背包拓展题目

💕"2024.3.28小米汽车发布"💕 作者:Lvzi 文章主要内容:算法系列–动态规划–背包问题(2)–01背包拓展题目 大家好,今天为大家带来的是算法系列--动态规划--背包问题(2)--01背包拓展题目 1.分割等和⼦集 链接: https:/…

能够解析任何编程语言的开源语法解析树 | 开源日报 No.171

tree-sitter/tree-sitter Stars: 14.6k License: MIT tree-sitter 是一个用于编程工具的增量解析系统。 该项目的主要功能、关键特性、核心优势包括: 通用性,能够解析任何编程语言高效性,能够在文本编辑器中每次按键都进行解析健壮性&…

Mysql的日志管理,备份与回复

目录 一、Mysql日志管理 1、日志的默认位置及配置文件 2、日志分类 2.1错误日志 2.2通用查询日志 2.3二进制日志 2.4慢查询日志 2.5中继日志 3、日志配置 4、日志查询 4.1查询通用日志是否开启 4.2查询二进制日志是否开启 4.3查看慢查询日志是否开启 4.4查询慢查…

web——rce,代码执行,命令执行

eval就会将里面的内容当成php来执行 ctf 第一 第二 过滤system\ 也可也怎么做 然后访问2.txt 第三(参数逃逸) 可以用这个,url中的eval是让get函数的使用,网页中的eval是为了让system中的函数起效 第四 过滤分号,因为上…

解决:PytorchStreamWriter failed writing file data

文章目录 问题内容问题分析解决思路 问题内容 今天在炼丹的时候,我发现模型跑到140步的时候保存权重突然报了个问题,详细内容如下: Traceback (most recent call last):File "/public/home/dyedd/.conda/envs/diffusers/lib/python3.8…

【Java核心能力】一篇文章了解 ZooKeeper 底层运行原理

欢迎关注公众号(通过文章导读关注:【11来了】),及时收到 AI 前沿项目工具及新技术的推送! 在我后台回复 「资料」 可领取编程高频电子书! 在我后台回复「面试」可领取硬核面试笔记! 文章导读地址…

Mysql数据库——主从复制与读写分离

目录 前言 一、主从复制 1.主从复制的定义 2.Mysql主从复制支持的类型 3.主从复制的过程 4. 主从复制出现的问题 5.解决方法 二、读写分离 1.读写分离的定义 2.读写分离的作用 3.读写分离作用场景 3.1基于程序代码内部实现 3.2基于中间代理层实现 4.主从复制与读…

Redis命令介绍

一、redis启动: 本地启动:redis-cli 远程启动:redis-cli -h host -p port -a password Redis 连接命令 1 AUTH password 验证密码是否正确 2 ECHO message 打印字符串 3 PING 查看服务是否运行 4 QUIT 关闭当前连接 5 SELECT index 切换…

UI设计案例,B端后台界面设计教程

B端产品是为“组织”提供服务,以业务为中心,追求时效性,在视觉上,内容为王,视觉为功能让步,追求简洁、清晰、克制、理性的视觉风格。B 端产品业务比较复杂,页面内容也会较多,B端界面…

Python与人工智能:气象领域的数据处理与模型优化

Python是功能强大、免费、开源,实现面向对象的编程语言,在数据处理、科学计算、数学建模、数据挖掘和数据可视化方面具备优异的性能,这些优势使得Python在气象、海洋、地理、气候、水文和生态等地学领域的科研和工程项目中得到广泛应用。可以…

LLM资料:中文embedding库

Highlight(重点提示) 理解LLM,就要理解Transformer,但其实最基础的还是要从词的embedding讲起。 毕竟计算机能处理的只有数字,所以万事开头的第一步就是将要处理的任务转换为数字。 面向中文的开源embedding库在自然…

MQ集合了

消息队列,FIFO :异步 解耦 削峰 复杂度上升 幂等 重复消费 消息丢失 / 可用性降低 mq故障 / 一致性要求 mq对比: activeMQ:jms规范,支持事务 xa协议 rabbitMQ:erlang 性能👌 高并发 多语…

react-router v6的Link组件relative属性解释

Link组件有一个名为relative的属性,值为route或path,默认为route 当Link的to为两个点时,配置relativeroute|path会有不同的效果, 之前由于路径嵌套不够深,看不出区别,于是尝试加深路径,一眼就看出了区别 官方解释 | React Router6 中文文档 下方代码请看根路径/cd及其二级路…

C++优先队列——priority_queue,函数对象,labmda表达式,pair等

头文件&#xff1a;#include<queue> 内部使用堆来实现&#xff0c;在需要或得最大的几个值或最小的几个值而不关心整个数组的顺序时非常好用。 用法&#xff1a; priority_queue<int, vector<int>, greater<int>>q; 第一个参数为堆中存储的元素。 …

vue 借助vue-amap插件对高德地图的简单使用

需求&#xff1a;实现点击获取经纬度、定位、对特殊位置标点及自定义信息窗体功能。 高德地图的官网API&#xff1a;概述-地图 JS API 1.4 | 高德地图API vue-amap的中文文档&#xff1a;组件 | vue-amap 实现&#xff1a; 1、安装vue-amap插件 npm install vue-amap --save…

AI预测福彩3D第20弹【2024年3月28日预测--第4套算法重新开始计算第6次测试】

今天继续对第4套算法进行测试&#xff0c;测试的目的主要是为了记录统计两套方案的稳定性和命中率&#xff0c;昨天的第二套方案已命中。今天是第5次测试&#xff0c;同样测试两个方案。废话不多说&#xff0c;直接上结果。 2024年3月28日福彩3D的七码预测结果如下 …

武忠祥《660题》高效刷题包+资料分享

660题的难度书虽然比较难&#xff0c;对于基础的考察比较深入&#xff0c;所以&#xff0c;有没有一种可能&#xff0c;做题太慢&#xff0c;是因为基础不好导致的&#xff01; 所以再继续做下去&#xff0c;就没有什么意义了&#xff0c;因为这就像是用一把钝刀去砍树&#x…

mybatis搭建开发环境

1.创建maven工程 2.配置pom.xml <!--数据库驱动--> <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version> </dependency> <!--Mybatis--> <depend…
最新文章