【深度学习】手写数字识别

news2025/7/11 5:53:11

一、机器学习问题的求解步骤

学习

  • 使用训练数据进行权重参数的学习
    推理
  • 使用学习到的参数对输入的数据进行分类

二、MNIST数据集

2.1 load_mnist(flatten=True, normalize=False)

flatten=true

读入的图像一维numpy数组的形式保存

2.2 函数学习

def fromarray(obj, mode=None):

Then this can be used to convert it to a Pillow image::

      im = Image.fromarray(a)

使用代码读入MINIST数据集

# coding: utf-8
import sys, os
sys.path.append(os.pardir)  # 为了导入父目录的文件而进行的设定
import numpy as np
from dataset.mnist import load_mnist
from PIL import Image


def img_show(img):
    pil_img = Image.fromarray(np.uint8(img))
    pil_img.show()

(x_train, t_train), (x_test, t_test) = load_mnist(flatten=True, normalize=False)

img = x_train[0]
label = t_train[0]
print(label)  # 5

print(img.shape)  # (784,)
img = img.reshape(28, 28)  # 把图像的形状变为原来的尺寸
print(img.shape)  # (28, 28)

img_show(img)

在这里插入图片描述

三、关于MNIST图像数据

28*28像素的灰度图像(1像素)

  • 每个像素的取值都是0-255
  • 图像数据都标有7,2,1标签

3.1 神经网络的推理处理

输入层的神经元数量?

  • 28*28=784个神经元

输出层的神经元数量?

  • 神经网络识别的结果0-9,共10种类别,所以需要10个神经元

2个隐藏层

  • 每个隐藏层中的神经元的数量可以任意设置

我们用下面这3个函数来实现神经网络的推理处理

def get_data():
    (x_train, t_train), (x_test, t_test) = load_mnist(normalize=True, flatten=True, one_hot_label=False)
    return x_test, t_test


def init_network():
    with open("sample_weight.pkl", 'rb') as f:
        network = pickle.load(f)
    return network


def predict(network, x):
    W1, W2, W3 = network['W1'], network['W2'], network['W3']
    b1, b2, b3 = network['b1'], network['b2'], network['b3']

    a1 = np.dot(x, W1) + b1
    z1 = sigmoid(a1)
    a2 = np.dot(z1, W2) + b2
    z2 = sigmoid(a2)
    a3 = np.dot(z2, W3) + b3
    y = softmax(a3)

    return y

x表示权重矩阵

  • predict 表示前向传播

3.2 评价指标

识别精度Accuracy

能在多大程度上正确分类

3.3 具体函数意义解释

该函数用来读入保存在pickle文件中学习到的权重参数

在这个文件中以字典变量的形式保存了权重和偏置参数

def init_network():
    with open("sample_weight.pkl", 'rb') as f:
        network = pickle.load(f)
    return network

predict()函数用来进行分类

  • 以numpy数组的形式输出各个标签对应的概率

3.4 关于函数参数

normalize

  • 正规化(把数据限定到某个范围)

函数内部会进行转换,将图像的各个像素值除以255

  • 使得数据的值在0到1之内

五、预处理

对神经网络中的输入数据进行某种既定的转换

代码执行结果

D:\ANACONDA\envs\pytorch\python.exe C:/Users/Administrator/Desktop/DeepLearning/ch03/neuralnet_mnist.py
Accuracy:0.9352

Process finished with exit code 0

这里表示有93%的数据被正确分类了

  • 我们打算把精度提高到99%以上才算好

六、专业英语

neural 神经元

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第六章《类的高级特性》第2节:包的创建和使用

在一个Java工程中,往往会包含很多类。为了方便工程管理,程序员总是希望能够把这些类按照功能分开存放。为了达到这个目的,Java语言允许开发者把不同的类放入不同的包中。所谓“包”就是存放类的容器,在一个包中可以存放多个类。 6.2.1创建包 程序员使用IDEA可以很轻松的创…

开环控制(自动控制理论)

自动控制的基本原理方式 自动控制:是指没有人直接参与的情况下,利用控制装置(称为控制器),使整个生产过程或工作机械(称被控对象)的某个工作状态或参数(即被控量)自动地按…

ubuntu 22.04 配置 Prometheus 和 Grafana 服务器监控

由于内存白菜价, 家里的虚拟机越来越多了。 1个是难以管理hostname 和 ip, 只靠/etc/hosts 去记住其实并不方便 试过宝塔linux面板, 可惜是单机的,不适用于管理集群linux服务器, 而且里面一股金钱气息。 至于他们另1…

李宏毅2017机器学习课程 回归

李宏毅2017机器学习课程 P3 回归 Regression 下文不区分w和ω( 文章目录李宏毅2017机器学习课程 P3 回归 Regression回归定义举例:Pokemon精灵攻击力预测(Combat Power of a Pokemon)模型步骤Step1:模型假设-线性模型一元线性模型(单个特征&…

搭建lnmp+nfs+调度器

→→→大虾好吃吗←←← 目录 搭建lnmp平台 nginx配置 mysql配置 php配置 验证 nfs调度器 安装服务 nfs配置 调度器配置 验证 →→→大虾好吃吗←←← 实验目标:搭建lnmp平台,安装wordpress论坛搭建nfs,客户端通过调度器访问nfs论坛。 实验拓…

pandas数据分析:十分钟快速入门重点函数速查

文章目录前言一、生成Series对象和DataFrame对象二、查看数据三、获取数据3.1 获取单列数据3.2 按照标签选择数据:loc函数3.2 按照位置选择数据:iloc函数3.3 布尔索引3.4 赋值四、缺失值五、运算六、merge:合并DataFrame6.1 concat函数6.2 me…

体系结构31_机群计算机

目前流行的高性能并行计算机系统结构通常可以分成五类:并行向量处理机(PVP)、对称多处理机(SMP)、大规模并行处理机(MPP)、分布共享存储(DSM)多处理机和机群(…

现代密码学导论-13-归约证明

目录 3.3.2 Proofs by Reduction 最后来理一遍: 3.3.2 Proofs by Reduction 如果我们希望证明一个给定的构造(例如,加密方案)在计算上是安全的,那么——除非该方案在信息理论上是安全的——我们必须依赖于未经证明的…

影像匹配基本算法(摄影测量)

影像匹配实质上是在两幅(或多幅)影像之间识别同名点,它是计算机视觉及数字摄影测量的核心问题。由于早期的研究一般使用相关技术解决影像匹配问题,所以影像匹配常常被称为影像相关。 根据影像匹配过程中匹配基元选择的不同,影像匹配方法可分…

iptables应用大全

iptables四表五链: 1、“四表”是指 iptables 的功能 ——filter 表(过滤规则表):控制数据包是否允许进出及转发 ——nat 表(地址转换规则表):控制数据包中地址转换 ——mangle(修改…

【C++笔试强训】第三十天

🎇C笔试强训 博客主页:一起去看日落吗分享博主的C刷题日常,大家一起学习博主的能力有限,出现错误希望大家不吝赐教分享给大家一句我很喜欢的话:夜色难免微凉,前方必有曙光 🌞。 💦&a…

计算机网络——应用层重点协议【HTTP协议】

目录 1、HTTP是什么 抓包工具Fidder的下载及使用 2、HTTP协议工作过程 3、HTTP协议格式 HTTP请求: HTTP响应: 协议格式总结: 4、HTTP请求 4.1、URL / URI 4.1.1、URL(I)基本格式 4.1.2、URL encode 4.2、认识“方法” 4.2.1、GET…

五、ROS2接口及其使用

接口,即interface,其实是一种规范。 举个例子,不同厂家生产出不同类型的激光雷达,每种雷达的驱动方式,扫描速率都不相同。 当机器人进行导航时,需要激光雷达的扫描数据,假如没有统一接口&#x…

Nginx (6):nginx防盗链配置

先说一下含义,就是想让nginx里的静态资源只供它反向代理连接的内部服务器去访问,其他人想访问,就不给。比如01虚拟机充当nginx服务器,它里面存了很多静态资源,04虚拟机proxy_pass到01虚拟机,想访问它的页面…

Linux--信号量共享内存

1.基础知识: (1)共享内存是最快的IPC形式。一旦这样的内存映射到共享它的进程的地址空间,这些进程间的数据传递不再涉及内核,即进程不再通过执行进入内核的系统调用来传递彼此的数据。 (2)共享…

MySQL浅析之架构概览

MySQL主要分为Server层,跟存储引擎层。 Server层负责“逻辑处理”,包括连接器、分析器、优化器、执行器以及所有内置函数。所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。 存储引擎层跟文件系统交互,负责数…

bug探索之路:List<Map>get取出元素却是String?

一、bug初现峥嵘 有一说一我定义的List<Map>对吧&#xff0c;我get(0)取出的元素也应该是Map类型没问题吧。不行&#xff0c;编译器告诉我&#xff0c;java.lang.String cannot be cast to java.util.Map。 这个意思就是说&#xff0c;你这个就是String类型&#xff0c;…

Spring Cloud Gateway夺命连环10问?

这篇文章介绍下微服务中的一个重要角色&#xff1a;网关&#xff0c;对于网关如何选择&#xff0c;由于阿里系暂时未出网关&#xff0c;当然是选择了Spring cloud Gateway&#xff0c;毕竟是亲儿子。 文章目录如下&#xff1a; ​ 编辑切换为居中 添加图片注释&#xff0c;不…

[附源码]java毕业设计智能超市导购系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【科学文献计量】RC.networkBibCoupling()中的参数解释

RC.networkBibCoupling中的参数解释 1 数据2 RC.networkBibCoupling()中的参数解释2.1 测试weighted参数2.2 测试fullInfo参数2.3 测试addCR参数1 数据 使用web of science中的数据,借助metaknowledge库读入到python中,然后截取2020-2021年的数据构建网络 2 RC.networkBib…