调用数据集mnist(下载+调用全攻略)
1、下载mnist数据集请自取:
通过百度网盘分享的文件:mnist
链接:https://pan.baidu.com/s/1ia3vFA73hEtWK9qU-O-4iQ?pwd=mnis
提取码:mnis
下载后把数据集放在没有中文的路径下。
# 本文将下载好的数据集放在C:\DeepLearning\dataset路径下
代码中 dataset_dir = 'C:\DeepLearning\dataset'
2、加载mnist数据集
以下是mnist.py文件,用于加载数据集
# coding: utf-8
try:import urllib.request
except ImportError:raise ImportError('You should use Python 3.x')
import os.path
import gzip
import pickle
import os
import numpy as np# url_base = 'https://ossci-datasets.s3.amazonaws.com/mnist/' # mirror site
key_file = {'train_img':'train-images-idx3-ubyte.gz','train_label':'train-labels-idx1-ubyte.gz','test_img':'t10k-images-idx3-ubyte.gz','test_label':'t10k-labels-idx1-ubyte.gz'
}# 将下载好的数据集放在C:\DeepLearning\dataset路径下
dataset_dir = 'C:\DeepLearning\dataset'
save_file = dataset_dir + "/mnist.pkl"train_num = 60000
test_num = 10000
img_dim = (1, 28, 28)
img_size = 784# 注释掉下载
# def _download(file_name):
# file_path = dataset_dir + "/" + file_name# if os.path.exists(file_path):
# return# print("Downloading " + file_name + " ... ")
# urllib.request.urlretrieve(url_base + file_name, file_path)
# print("Done")# def download_mnist():
# for v in key_file.values():
# _download(v)def _load_label(file_name):file_path = dataset_dir + "/" + file_nameprint("Converting " + file_name + " to NumPy Array ...")with gzip.open(file_path, 'rb') as f:labels = np.frombuffer(f.read(), np.uint8, offset=8)print("Done")return labelsdef _load_img(file_name):file_path = dataset_dir + "/" + file_nameprint("Converting " + file_name + " to NumPy Array ...") with gzip.open(file_path, 'rb') as f:data = np.frombuffer(f.read(), np.uint8, offset=16)data = data.reshape(-1, img_size)print("Done")return datadef _convert_numpy():dataset = {}dataset['train_img'] = _load_img(key_file['train_img'])dataset['train_label'] = _load_label(key_file['train_label']) dataset['test_img'] = _load_img(key_file['test_img'])dataset['test_label'] = _load_label(key_file['test_label'])return datasetdef init_mnist():# download_mnist() 取消下载dataset = _convert_numpy()print("Creating pickle file ...")with open(save_file, 'wb') as f:pickle.dump(dataset, f, -1)print("Done!")def _change_one_hot_label(X):T = np.zeros((X.size, 10))for idx, row in enumerate(T):row[X[idx]] = 1return Tdef load_mnist(normalize=True, flatten=True, one_hot_label=False):"""读入MNIST数据集Parameters----------normalize : 将图像的像素值正规化为0.0~1.0one_hot_label : one_hot_label为True的情况下,标签作为one-hot数组返回one-hot数组是指[0,0,1,0,0,0,0,0,0,0]这样的数组flatten : 是否将图像展开为一维数组Returns-------(训练图像, 训练标签), (测试图像, 测试标签)"""if not os.path.exists(save_file):init_mnist()with open(save_file, 'rb') as f:dataset = pickle.load(f)if normalize:for key in ('train_img', 'test_img'):dataset[key] = dataset[key].astype(np.float32)dataset[key] /= 255.0if one_hot_label:dataset['train_label'] = _change_one_hot_label(dataset['train_label'])dataset['test_label'] = _change_one_hot_label(dataset['test_label'])if not flatten:for key in ('train_img', 'test_img'):dataset[key] = dataset[key].reshape(-1, 1, 28, 28)return (dataset['train_img'], dataset['train_label']), (dataset['test_img'], dataset['test_label']) if __name__ == '__main__':init_mnist()
3、调用数据集
mnist_show.py文件用于调用数据集。
注意,第三行导入父目录,父目录必须有dataset文件夹,文件夹中有mnist.py文件,此代码才可以调用mnist.py文件。
# coding: utf-8
import sys, os
sys.path.append(os.pardir) # 为了导入父目录的文件而进行的设定
import numpy as np
from dataset.mnist import load_mnist #此处要求在当前文件路径下有dataset文件夹,文件夹中有mnist.py文件
from PIL import Imagedef 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) # 5print(img.shape) # (784,)
img = img.reshape(28, 28) # 把图像的形状变为原来的尺寸
print(img.shape) # (28, 28)img_show(img)
4、批处理
neuralne_mnist_batch.py
# coding: utf-8
import sys, os
sys.path.append(os.pardir) # 为了导入父目录的文件而进行的设定
import numpy as np
import pickle
from dataset.mnist import load_mnist
from common.functions import sigmoid, softmaxdef get_data():(x_train, t_train), (x_test, t_test) = load_mnist(normalize=True, flatten=True, one_hot_label=False)return x_test, t_testdef init_network():with open("sample_weight.pkl", 'rb') as f:network = pickle.load(f)return networkdef 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) + b1z1 = sigmoid(a1)a2 = np.dot(z1, w2) + b2z2 = sigmoid(a2)a3 = np.dot(z2, w3) + b3y = softmax(a3)return yx, t = get_data()
network = init_network()batch_size = 100 # 批数量
accuracy_cnt = 0for i in range(0, len(x), batch_size):x_batch = x[i:i+batch_size]y_batch = predict(network, x_batch)p = np.argmax(y_batch, axis=1)accuracy_cnt += np.sum(p == t[i:i+batch_size])print("Accuracy:" + str(float(accuracy_cnt) / len(x)))
相关文章:
调用数据集mnist(下载+调用全攻略)
1、下载mnist数据集请自取: 通过百度网盘分享的文件:mnist 链接:https://pan.baidu.com/s/1ia3vFA73hEtWK9qU-O-4iQ?pwdmnis 提取码:mnis 下载后把数据集放在没有中文的路径下。 # 本文将下载好的数据集放在C:\DeepLearning\…...
【基础语法】Java Scanner hasNext() 和 hasNextLine() 的区别
OJ在线编程常见输入输出练习中默认模板 import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.…...
react使用Fullcalendar 实战用法
使用步骤请参考:react使用Fullcalendar 卡片式的日历: 需求图: 卡片式的日历,其实我是推荐 antd的,我两个都写了一下都能实现。 antd 的代码: antd的我直接用的官网示例:antd 日历示例 i…...
优秀项目经理必知的10款项目管理软件推荐
本文精心为项目经理推荐30款国内外免费的项目管理软件,涵盖桌面应用与Web平台,其中不乏优秀的开源软件。这些工具旨在助力项目经理高效规划、跟踪与控制项目,无论是通过甘特图进行可视化管理,还是利用任务分配、团队协作等功能&am…...
植物神经紊乱不用怕,这些维生素来帮你!
你是否经常感到身体疲惫、情绪波动大、心悸、胸闷?这可能是植物神经紊乱在作祟。别担心,通过合理的维生素补充,可以有效缓解症状,提升生活质量。今天,我们就来聊聊植物神经紊乱患者应该补充哪些维生素。 🔍…...
NRF52832学习笔记(41)——添加串口库libuarte
一、背景 由于板子上不支持硬件流控,在使用 app_uart_fifo 库接收串口大数据时,频繁报 APP_UART_COMMUNICATION_ERROR 错误,多次重新初始化后,串口也不再产生中断了。查看官方论坛后决定使用串口异步库 libuarte。 二、简介 Li…...
Moore Perf System 1.1版本
Moore Perf System(一款性能分析工具) 提供可视化界面,在时间轴上按时间顺序显示 CPU 和 GPU 的事件、吞吐和性能指标,帮助开发人员方便、快速、准确的定位到系统级别的性能瓶颈,进而进行针对性分析和优化,…...
SpringBoot+Shirp的权限管理
目录 怎么实现动态菜单 1.html页面 2.获取动态菜单 Shiro权限刷新 1. 配置Shiro 2. 创建权限刷新服务 3. 调用权限刷新服务 注意事项 如何更新ShiroFilter初始权限 怎么实现动态菜单 1.html页面 <ul class"nav side-menu"><!--第一重循环…...
OpenCV图像基础
目录 显示窗口 创建空白图像 保存图片 图像裁剪 调整图片大小 图像绘制 绘制圆形 绘制矩形 绘制直线 绘制文本 中文乱码 控制鼠标 视频处理 显示窗口 cv2.namedWindow(winname, flagsNone) 创建一个命名窗口,以便在该窗口中显示图像或进行其他图形操作…...
基于MATLAB的图像拼接技术
实验名称:基于MATLAB的图像拼接技术实验目的:利用图像拼接技术得到超宽视角的图像,用来虚拟实际场景。实验原理: 基于相位相关的图像拼接技术是一种基于频域的方法,通过求得图像在频域上是相位相关特点来找到特征位置…...
ComfyUI 快速入门(环境搭建)
ComfyUI 是一个现代化、灵活的用户界面(UI)工具,专为 AI 模型和深度学习框架设计,能够快速实现可视化操作和定制化界面。在本教程中,我们将介绍如何在本地机器上快速搭建 ComfyUI 环境,帮助你开始使用这一工…...
将HTML项目上传至Gitee仓库(详细教程)
1.登录giett giett地址链接:Gitee - 基于 Git 的代码托管和研发协作平台 2.新建一个giett仓库 创建后得到远程仓库: 3、在本地项目文件夹右击鼠标点击 Open Git Bash Here 4、输入命令 命令:git init,这个目录变成git可以管理的仓库,会出…...
如何应对Oracle SQL语句的数据去重问题,应该考虑哪几个方面?
引言 在数据管理和数据库设计中,数据去重是一个重要的课题。随着信息技术的快速发展,数据的产生速度和数量都在急剧增加,如何有效地管理和维护这些数据成为了一个亟待解决的问题。 数据去重不仅可以减少存储空间的占用,还可以提高数据查询的效率,确保数据的准确性和一致…...
论负载均衡技术在Web系统中的应用论文
一、概要叙述软件项目及其主要工作 在2023年,我有幸参与了某公司电子商务平台的研发项目,担任系统架构设计师一职。该项目旨在构建一个高性能、高可用性的电子商务平台,以支撑公司日益增长的在线业务需求。作为系统架构设计的核心成员&#…...
NumPy 数据类型
1.常用 NumPy 基本类型 (1)bool_:布尔型数据类型(True 或者 False) (2)int_:默认的整数类型(类似C 语言long,int32 或 int64) (3&a…...
JavaScript——(4)
【DOM】 一、DOM基本概念 DOM(Document Object Model,文档对象模型)是 JavaScript 操作 HTML 文档的接口,使文档操作变得非常优雅、简便。 DOM 最大的特点就是将 HTML 文档表示为 “节点树”。 DOM 元素/节点:就是…...
每日一练 | DHCP Relay(DHCP 中继)
01 真题题目 DHCP Relay 又称为 DHCP 中继,下列关于 DHCP Relay 的说法正确的是(多选): A. DHCP 协议多采用广播报文,如果出现多个子网则无法穿越,所以需要 DHCP Relay 设备。 B. DHCP Relay 一定是一台交…...
`psdparse`:解锁Photoshop PSD文件的Python密钥
文章目录 psdparse:解锁Photoshop PSD文件的Python密钥背景:为何选择psdparse?psdparse是什么?如何安装psdparse?简单函数使用方法应用场景常见Bug及解决方案总结 psdparse:解锁Photoshop PSD文件的Python密…...
考研要求掌握的C语言程度(插入排序)
插入排序是啥类型的排序 插入类型的 插入排序经常用在啥类型场景下 用在有序序列下的基础上插入新数据 时间复杂度分析 如果是有序的基础下,最好的时间复杂度是O(n); 普通情况下是O(n^2) 插入排序的原理是啥&am…...
mybatis源码解析-sql执行流程
1 执行器的创建 1. SimpleExecutor 描述:最基本的执行器,每次查询都会创建新的语句对象,并且不会缓存任何结果。 特点: 每次查询都会创建新的 PreparedStatement 对象。 不支持一级缓存。 适用于简单的查询操作,不…...
别再只会 `apk add` 了!Alpine Linux 包管理器 APK 的 10 个高效用法与避坑指南
Alpine Linux 包管理器 APK 的 10 个高效用法与避坑指南如果你经常使用 Alpine Linux 作为容器基础镜像,那么对apk add这个命令一定不陌生。但 Alpine 的包管理器 APK 远不止安装软件这么简单,它隐藏了许多能大幅提升工作效率的实用技巧。本文将带你深入…...
深度学习结合CT图像预测岩石渗透率:从孔隙网络到升尺度计算
1. 项目概述:当深度学习遇见岩石CT图像 在油气勘探、地热开发乃至二氧化碳地质封存这些领域,我们这些从业者最头疼的问题之一,就是如何准确知道一块岩石的“透水能力”,也就是渗透率。传统上,我们依赖实验室岩心驱替实…...
10分钟上手asc-tools:昇腾NPU算子开发工具集
前言 要做昇腾NPU算子开发,但不知道从哪入手?Ascend C代码写完了,不知道怎么编译、怎么调试、怎么验证?asc-tools就是为这个场景准备的。 asc-tools是昇腾官方提供的算子开发工具集,包含了编译工具(ascen…...
Masson染色原理、步骤、判读及常见问题
Masson染色是组织病理检测中经典的三色染色技术,由法国医生Claude L. Masson研发,是病理实验中区分胶原纤维与其他软组织成分的手段。在慢性炎症、机化及瘢痕形成过程中,胶原纤维会随着病理进展而出现。早期在H-E染色切片中,这些纤…...
[Python] Python中自带模块级的单例模式-不需要定义单例类
Python中的单例场景 一般一些需要在模块中全局维护的变量(变量修改范围在模块内);简单方式是构建一个全局变量,然后不符合编码规范:1.线程安全与并发问题;2.测试隔离困难;3.缺乏多实例/多租户支…...
SSH、SNMP、NETCONF、SFTP
SSH CE12800配置 #开启SSH服务 stelnet server enable ssh user renxinyu ssh user renxinyu authentication-type password ssh user renxinyu service-type stelnet #创建本地用户 aaalocal-user renxinyu password cipher Huawei123local-user renxinyu level 3local-user r…...
卷积神经网络在天文图像中自动搜寻双活动星系核的工程实践
1. 项目概述:当AI遇见星空,寻找宇宙中的“双生子” 在浩瀚的宇宙中,超大质量黑洞的并合是星系演化剧本里的高潮章节。理论告诉我们,当两个星系在引力作用下最终合二为一时,它们中心的“巨兽”——超大质量黑洞——也会…...
Von Neumann内存映射检测与MON51调试实践
1. 理解Von Neumann内存映射的基础概念在嵌入式系统开发中,内存架构的选择直接影响着程序的执行效率和硬件设计。Von Neumann架构与哈佛架构是两种最基本的内存组织方式,而MON51调试器需要明确识别目标硬件的内存映射方式才能正常工作。Von Neumann架构的…...
Armv9 SME架构FMOP4A指令:混合精度矩阵运算优化
1. SME架构与FMOP4A指令概述 在现代处理器架构中,矩阵运算性能直接决定了AI推理和科学计算的效率。Armv9引入的SME(Scalable Matrix Extension)架构通过ZA瓦片寄存器和专用矩阵指令集,为浮点密集型计算提供了硬件级加速方案。其中…...
小电视空降助手:告别B站广告烦恼的终极解决方案
小电视空降助手:告别B站广告烦恼的终极解决方案 【免费下载链接】BilibiliSponsorBlock 一款跳过小电视视频中恰饭片段的浏览器插件,移植自 SponsorBlock。A browser extension to skip sponsored segments in videos, ported from the SponsorBlock 项…...
