numpy mnist数据集下载
时间: 2024-12-28 12:19:53 浏览: 2
### 使用 NumPy 加载和预处理 MNIST 数据集
为了使用 NumPy 处理 MNIST 数据集,首先需要下载该数据集。可以通过多种方式获取 MNIST 数据集;一种常见的方式是从官方源或其他可信资源手动下载文件或将 Python 库用于自动化此过程。
#### 下载 MNIST 数据集
Python 中有一个名为 `tensorflow` 的库提供了方便的方法来自动下载并读取 MNIST 数据集:
```python
from tensorflow.keras.datasets import mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
```
这段代码会从互联网上下载 MNIST 数据集,并将其分为训练集和测试集两部分[^1]。
#### 预处理图像数据
一旦有了这些数据之后,则需对其进行必要的预处理操作以适应后续建模需求。对于大多数机器学习算法来说,输入特征应该被标准化到相同的尺度范围内。这里采用简单的缩放方法将像素值调整至0~1之间:
```python
import numpy as np
# 将图片数据类型由uint8转为float32,并除以255实现归一化
train_images = train_images.astype(np.float32) / 255.
test_images = test_images.astype(np.float32) / 255.
print(f'Training set shape: {train_images.shape}')
print(f'Testing set shape: {test_images.shape}')
```
上述代码片段展示了如何通过将原始 uint8 类型的数据转换成 float32 并除以最大可能的灰度级数(即255),从而完成对图像数组的规范化处理[^2]。
#### 批量准备数据
考虑到计算效率,在实际应用中往往不是一次性喂给模型全部样本来做预测或更新权重,而是分批次地送入一定数量的小样本集合。因此还需要进一步组织好这批数据供后续迭代调用:
```python
def data_generator(images, labels, batch_size=64):
num_samples = images.shape[0]
indices = list(range(num_samples))
while True:
np.random.shuffle(indices)
for start_idx in range(0, num_samples, batch_size):
excerpt = indices[start_idx:start_idx + batch_size]
yield images[excerpt], labels[excerpt]
batch_size = 64
train_loader = data_generator(train_images, train_labels, batch_size=batch_size)
test_loader = data_generator(test_images, test_labels, batch_size=batch_size)
for batch_imgs, batch_lbls in train_loader:
break
print('Batch of training samples:', batch_imgs.shape)
print('Corresponding labels:', batch_lbls.shape)
```
以上定义了一个生成器函数 `data_generator()` 来创建可重复使用的批量数据流对象 `train_loader` 和 `test_loader` 。每次迭代都会返回一个新的随机选取出来的 mini-batch ,这对于防止过拟合以及加速收敛具有重要意义。
阅读全文