下载MNIST数据集文件
时间: 2025-05-25 07:19:47 浏览: 14
### 如何下载MNIST数据集文件
为了下载MNIST数据集文件,可以按照以下方法操作。MNIST数据集可以从其官方网站获取[^1],并使用Python中的`gzip`包来解压`.gz`格式的文件。
#### 官方网站链接
MNIST数据集的官方下载地址为:[http://yann.lecun.com/exdb/mnist/](http://yann.lecun.com/exdb/mnist/)。该页面提供了四个主要文件:
- `train-images-idx3-ubyte.gz`: 训练图像数据。
- `train-labels-idx1-ubyte.gz`: 训练标签数据。
- `t10k-images-idx3-ubyte.gz`: 测试图像数据。
- `t10k-labels-idx1-ubyte.gz`: 测试标签数据。
这些文件均为压缩格式(`.gz`),需要先下载再解压才能读取其中的内容。
#### 使用Python下载和解压MNIST数据集
可以通过Python脚本实现自动化的下载和解压过程。以下是完整的代码示例:
```python
import os
import gzip
import requests
from pathlib import Path
# 设置保存路径
dataset_folder = Path('../datasets/mnist')
os.makedirs(dataset_folder, exist_ok=True)
# 文件名定义
files_name = {
'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'
}
# 下载函数
def download_file(url, save_path):
response = requests.get(url)
with open(save_path, 'wb') as f:
f.write(response.content)
# 解压函数
def decompress_gz(gz_file, output_file):
with gzip.open(gz_file, 'rb') as f_in:
with open(output_file, 'wb') as f_out:
f_out.writelines(f_in)
# 主程序
base_url = "http://yann.lecun.com/exdb/mnist/"
for key, file in files_name.items():
url = base_url + file
gz_path = dataset_folder / file
raw_path = dataset_folder / file.replace('.gz', '')
# 如果文件不存在,则下载
if not gz_path.exists():
print(f"Downloading {url}...")
download_file(url, gz_path)
# 如果未解压,则解压
if not raw_path.exists():
print(f"Decompressing {file} to {raw_path.name}")
decompress_gz(gz_path, raw_path)
```
以上代码实现了以下几个功能:
1. 自动创建存储目录`../datasets/mnist`。
2. 遍历指定的四个文件名称列表,并逐一从官网下载对应的`.gz`文件。
3. 对于已下载的压缩文件,调用`decompress_gz`函数将其解压成原始二进制文件。
#### 数据结构说明
解压后的文件遵循特定的数据格式[^2]。例如:
- 图像文件(如`t10k-images-idx3-ubyte`)由一个魔数、样本数量、每张图片的高度和宽度组成,随后是像素值序列。
- 标签文件(如`t10k-labels-idx1-ubyte`)则包含魔数以及对应类别的整数值。
通过解析这些文件,可以直接访问MNIST数据集中每一幅手写数字及其类别标注的信息。
---
阅读全文
相关推荐

















