huggingface 的 mnist 数据集的使用

news/2024/9/18 19:14:26/文章来源:https://www.cnblogs.com/litifeng/p/18417129

由于原始的地址设置了登陆权限,所以,选择 huggingface 的 mnist 数据集使用。

数据装载

首先到 hf 网站下载相关数据集,地址是 ylecun/mnist, 然后在安装 hf 设计的数据集加载套件 datasets 工具包。

调用

import numpy as np
from datasets import load_dataset
import matplotlib.pyplot as pltdataset = load_dataset('ylecun/mnist')
train_data = dataset['train']
first_image = train_data[0]
image = first_image['image']
image_array = np.array(image)
plt.imshow(image_array, cmap='gray')
plt.show()

解读

1. 导入必要的库:

from datasets import load_dataset
import numpy as np
import matplotlib.pyplot as plt
  • datasets: 用来加载数据集。
  • numpy: 用于处理数值数组。
  • matplotlib: 用于绘制图像。

2. 加载数据集并获取第一个样本:

dataset = load_dataset("ylecun/mnist")
train_dataset = dataset['train']
first_sample = train_dataset[0]

3. 打印图像和标签:

# 打印标签
print("Label:", first_sample['label'])# 获取图像数据
image = first_sample['image']# 将图像数据转换为NumPy数组,并展示其形状
image_array = np.array(image)
print("Image shape:", image_array.shape)# 绘制图像
plt.imshow(image_array, cmap='gray')
plt.show()

4. 打印图像的数字表示(像素值):

# 打印图像的前几行像素值
print("First few rows of pixel values:")
print(image_array[:5, :5])

代码解释

  • 图像数据: 在 MNIST 数据集中,图像通常以 NumPy 数组的形式存储,每个元素表示一个像素的灰度值。
  • 图像形状: image_array.shape 显示了图像的高度、宽度和通道数。对于灰度图像,通道数通常为1。
  • 绘制图像: plt.imshow 函数将 NumPy 数组绘制成图像。
  • 打印像素值: 可以直接打印 NumPy 数组的部分元素来查看像素值。

完整代码示例

from datasets import load_dataset
import numpy as np
import matplotlib.pyplot as pltdataset = load_dataset("ylecun/mnist")
train_dataset = dataset['train']
first_sample = train_dataset[0]print("Label:", first_sample['label'])image = first_sample['image']
image_array = np.array(image)
print("Image shape:", image_array.shape)plt.imshow(image_array, cmap='gray')
plt.show()print("First few rows of pixel values:")
print(image_array[:5, :5])

进一步分析

  • 像素值范围: MNIST 图像的像素值通常在 0 到 255 之间,表示不同程度的灰度。
  • 数据预处理: 在进行深度学习训练之前,通常需要对图像数据进行归一化、标准化等预处理。
  • 其他操作: 除了打印像素值,还可以计算图像的统计特征(如平均值、方差),或者对图像进行一些变换(如旋转、缩放)。

拓展

  • 查看其他样本: 可以通过改变索引来查看其他样本。
  • 保存图像: 可以使用 plt.imsave 函数将图像保存为文件。
  • 自定义可视化: 可以使用更复杂的可视化库,如 Seaborn,来创建更精美的图像。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安全:nftables:基础知识

一,policy: 1,原文档链接: https://docs.redhat.com/zh_hans/documentation/red_hat_enterprise_linux/9/html/configuring_firewalls_and_packet_filters/assembly_creating-and-managing-nftables-tables-chains-and-rules_getting-started-with-nftables#con_basics-of-nft…

Leetcode 952. 按公因数计算最大组件大小

1.题目基本信息 1.1.题目描述 给定一个由不同正整数的组成的非空数组 nums ,考虑下面的图: 有 nums.length 个节点,按从 nums[0] 到 nums[nums.length - 1] 标记;只有当 nums[i] 和 nums[j] 共用一个大于 1 的公因数时,nums[i] 和 nums[j]之间才有一条边。 返回 图中最大连…

Leetcode 19.删除链表的倒数第第N个结点

1.题目基本信息 题目:给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 地址:https://leetcode.cn/problems/remove-nth-node-from-end-of-list/description/ 2.解题方法 2.1.解题思路 使用快慢指针 2.2.解题步骤 第一步,初始化快指针为head,慢指针指向一…

Leetcode 297. 二叉树的序列化与反序列化

1.题目基本信息 1.1.题目描述 序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。 请设计一个算法来实现二叉树的序列化与反序列化。这里不限…

曾亨瑾第一次作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zjlg/rjjc/这个作业的目标 发布一篇随便简单介绍自己姓名 曾亨瑾学号 2022329301104一、自我介绍 1.基本信息 大家好,我是电气工程及其自动化(2)班的曾亨瑾,来自广东东莞。 2.兴趣爱好 我喜欢打羽毛球和慢跑(虽然都是…

2024软件工程第二次作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/SE2024这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13253这个作业的目标 开发类“羊了个羊”消除类小游戏,并借助AIGC技术提高效率学号 052203132项目展示Github地址:https://github.c…

宏定义与特别运用

目录宏定义数值宏常量字符串宏常量用define宏定义注释符号?程序的编译过程预处理中宏替换和去注释谁先谁后?如何写一个可靠的宏函数do-while-zero结构do-while-zero的评价宏定义中的空格宏只能在main函数上面定义吗?宏的作用范围#undef宏替换是在函数调用之前进行.块中进行#…

白云龙期货投资-第六讲

## 价量行情中的配合 1,价涨量增,顺势推动。 2,价量背离,趋势转变 (价与量在相对高位称为顶背离,在下跌末期为底背离。背离后如果想再次上涨或者下跌,一般价格都会出现一个盘整期,而成交量则出现缩量地量期)价量行情中的配合 1,价涨量增,顺势推动。 2,价量背离,趋势…

软件工程结对项目 3:python实现自动生成小学四则运算题目的程序

这个作业属于哪个课程 广工计院计科34班软工这个作业要求在哪里 作业要求团队成员1 庄崇立3122004633团队成员2 罗振烘3122004748这个作业的目标 结对合作完成小学四则运算题目的程序,熟悉项目开发流程,提高团队合作能力一、GitHub地址 二、需求 1.题目:实现一个自动生成小学…

结构、权限修饰符、类

结构、权限修饰符、类 结构(struct:自定义的数据结构) struct student {// 成员变量int number;char name[100];void func(){ // 成员函数(方法)number++;} };// 1. 形参为引用 void func1(student &stu){stu.number = 2000;strcpy_s(stu.name, sizeof(stu.name…

Leetcode 2183. 统计可以被 K 整除的下标对数目

1.题目基本信息 1.1.题目描述 给你一个下标从 0 开始、长度为 n 的整数数组 nums 和一个整数 k ,返回满足下述条件的下标对 (i, j) 的数目:0 <= i < j <= n - 1 且 nums[i] * nums[j] 能被 k 整除。1.2.题目地址 https://leetcode.cn/problems/count-array-pairs-di…

贪心算法-找不重叠的区间段

1.说明 有N个区间片段,查找其中不重叠的片段最大个数。例如(6 8),(2 4),(3 5),(1 5),(5 9),(8 10)这6个片段中,不重叠的片段最大个数为3,分别为(2 4),(6 8),(8 10)。 2.解析 先按照起始位置从小到大进行排序,使用贪心算法使有效片段尽可能小,即结束位置更靠前…