mnist库

MNIST库是深度学习中常用的图像数据集,主要包含手写数字。本文介绍了MNIST数据的不同来源,如Keras自带的链接可能无法下载,推荐使用Yann LeCun的官方网站作为正宗来源。此外,还提到了其他格式的数据包,如mnist.pkl.gz和mnist.zip,并提供了相应的读取方法。

mnist库是最常用的库,但是有几个不同的版本。


1 https://s3.amazonaws.com/img-datasets/mnist.npz

如果用keras自带的example,会从这个地址下载。但是由于某种原因,下载不下来。

http://blog.youkuaiyun.com/jsliuqun/article/details/64444302 这个博客也记录了下载不下来,用其他的方法。


   path = get_file(path, origin='https://s3.amazonaws.com/img-datasets/mnist.npz')
    f = np.load(path)
    x_train, y_train = f['x_train'], f['y_train']
    x_test, y_test = f['x_test'], f['y_test']
    f.close()
    return (x_train, y_train), (x_test, y_test)


2 http://yann.lecun.com/exdb/mnist/

train-images-idx3-ubyte.gz: training set images (9912422 bytes)

### 如何下载并安装MNIST #### 使用 PyTorch 的 torchvision 下载 MNIST 数据集 PyTorch 提供了一个方便的工具 `torchvision`,可以用来快速下载和加载常见的数据集,其中包括 MNIST 数据集。通过使用 `torchvision.datasets.MNIST` 类,能够轻松实现自动化下载功能[^1]。 以下是具体的代码示例: ```python from torchvision import datasets, transforms from torch.utils.data import DataLoader # 定义数据预处理操作 transform = transforms.Compose([ transforms.ToTensor(), # 将图像转换为 Tensor transforms.Normalize((0.5,), (0.5,)) # 归一化到 [-1, 1] ]) # 下载训练集和测试集 train_dataset = datasets.MNIST(root='./data', train=True, transform=transform, download=True) test_dataset = datasets.MNIST(root='./data', train=False, transform=transform, download=True) # 创建数据加载器 train_loader = DataLoader(dataset=train_dataset, batch_size=64, shuffle=True) test_loader = DataLoader(dataset=test_dataset, batch_size=64, shuffle=False) ``` 这段代码会自动检查本地是否存在 MNIST 数据集文件夹 (`./data`),如果不存在,则会从官方源下载所需的数据文件[^1]。 --- #### 手动下载 MNIST 数据集 对于不依赖于特定框架的情况,也可以手动编写脚本来完成 MNIST 数据集的下载工作。以下是一个基于 Python 和标准的简单实现方法[^2]: ```python from pathlib import Path import requests DATA_PATH = Path("data") PATH = DATA_PATH / "mnist" FILENAME = "mnist.pkl.gz" # 如果目标路径不存在则创建它 PATH.mkdir(parents=True, exist_ok=True) URL = "http://deeplearning.net/data/mnist/" if not (PATH / FILENAME).exists(): content = requests.get(URL + FILENAME).content with open(PATH / FILENAME, 'wb') as f: f.write(content) print(f"{FILENAME} 已成功保存至 {PATH}") ``` 此脚本利用了 `requests` 模块来获取远程资源,并将其存储在指定目录下。注意,在运行该脚本前需确认已安装必要的第三方模块(如未安装可通过命令 `pip install requests` 来解决)[^3]。 --- #### 解压缩与读取数据 下载完成后,通常还需要进一步解压 `.pkl.gz` 文件以便后续分析或建模用途。这里提供一段用于解压和加载数据的小程序片段: ```python import gzip import pickle with gzip.open(PATH / FILENAME, 'rb') as f: train_set, valid_set, test_set = pickle.load(f, encoding='latin1') print("训练集:", len(train_set[0])) print("验证集:", len(valid_set[0])) print("测试集:", len(test_set[0])) ``` 上述代码展示了如何打开 Gzip 压缩包以及解析其中的内容结构[^2]。 --- ### 注意事项 - **环境配置**:确保开发环境中具备所需的软件支持,比如 Python 版本兼容性、网络连接正常等条件。 - **磁盘空间**:考虑到可能产生的临时文件大小,请预留足够的硬盘容量给项目根目录下的子文件夹 `/data/`。 - **安全性考量**:当执行未知来源或者未经充分审查过的外部链接请求时要格外小心,防止潜在的安全隐患影响系统稳定性和个人隐私保护。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值