Python 读取 MNIST 数据集
简介
MNIST 数据集包含 70,000 个手写数字图像,其中 60,000 个用于训练,10,000 个用于测试。每个图像都是一个 28×28 灰度图像,表示一个手写数字。MNIST 数据集被广泛用于图像分类和手写数字识别的机器学习任务。Python爬虫服务!
使用 Python 读取 MNIST 数据集
Python 提供了几种方法来读取 MNIST 数据集。最常用的方法是使用 tensorflow
或 keras
库。
使用 TensorFlow
“`python
import tensorflow as tf
(xtrain, ytrain), (xtest, ytest) = tf.keras.datasets.mnist.load_data()
print(“训练集大小:”, x_train.shape)seo文章托管?
print(“测试集大小:”, x_test.shape)
“`
使用 Keras
“`python
from keras.datasets import mnist
(xtrain, ytrain), (xtest, ytest) = mnist.load_data()
print(“训练集大小:”, x_train.shape)
print(“测试集大小:”, x_test.shape)
“`
数据集格式
MNIST 数据集包含两个文件:train-images-idx3-ubyte
和 train-labels-idx1-ubyte
。train-images-idx3-ubyte
文件包含训练图像,而 train-labels-idx1-ubyte
文件包含图像标签。
图像文件是一个二进制文件,包含以下信息:
- 魔数:一个 4 字节的整数值,表示文件格式(0x00000803)
- 图像数量:一个 4 字节的整数值,表示图像数量
- 每张图像的行数:一个 4 字节的整数值,表示每张图像的行数
- 每张图像的列数:一个 4 字节的整数值,表示每张图像的列数
- 像素数据:一个逐行、逐列排列的字节数组,表示图像的像素值
标签文件是一个二进制文件,包含以下信息:
- 魔数:一个 4 字节的整数值,表示文件格式(0x00000801)
- 标签数量:一个 4 字节的整数值,表示标签数量
- 标签数据:一个字节数组,包含每个图像的标签
数据预处理
在将 MNIST 数据集用于机器学习任务之前,通常需要进行一些数据预处理步骤:
- 归一化:将像素值从 0 到 255 缩放为 0 到 1 之间的浮点数。
- 扁平化:将 28×28 的图像展平为 784 维的向量。
- 独热编码:将标签转换为独热编码向量。
常见问题
1. 如何获取 MNIST 数字的平均像素值?
“`python
import numpy as np
from keras.datasets import mnist
(xtrain, ytrain), (xtest, ytest) = mnist.load_data()
avgpixelvalue = np.mean(x_train)
print(“平均像素值:”, avgpixelvalue)
“`在线字数统计.
2. 如何查看 MNIST 数据集中的特定图像?
“`python
import matplotlib.pyplot as plt
from keras.datasets import mnist批量打开网址!
(xtrain, ytrain), (xtest, ytest) = mnist.load_data()
image_index = 0
image = xtrain[imageindex]
label = ytrain[imageindex]
plt.imshow(image, cmap=”gray”)
plt.title(“数字:{}”.format(label))
plt.show()
“`
3. 如何将 MNIST 数据集分成训练集和验证集?
“`python
from sklearn.modelselection import traintest_split标签导出插件!
(xtrain, ytrain), (xtest, ytest) = mnist.load_data()
xtrain, xval, ytrain, yval = traintestsplit(xtrain, ytrain, testsize=0.1, randomstate=42)
print(“训练集大小:”, xtrain.shape)
print(“验证集大小:”, xval.shape)
print(“测试集大小:”, x_test.shape)
“`
4. 如何保存和加载 MNIST 数据集?
“`python
import numpy as np
from keras.datasets import mnist
(xtrain, ytrain), (xtest, ytest) = mnist.load_data()
np.savez(“mnistdata.npz”, xtrain=xtrain, ytrain=ytrain, xtest=xtest, ytest=y_test)
data = np.load(“mnistdata.npz”)
xtrain = data[“xtrain”]
ytrain = data[“ytrain”]
xtest = data[“xtest”]
ytest = data[“y_test”]
“`
5. 如何使用 MNIST 数据集训练手写数字分类器?
“`python
import tensorflow as tf
from keras import models, layers
(xtrain, ytrain), (xtest, ytest) = tf.keras.datasets.mnist.load_data()
xtrain, xtest = xtrain / 255.0, xtest / 255.0图片接口插件!
model = models.Sequential([
layers.Flatten(input_shape=(28, 28)),
layers.Dense(128, activation=”relu”),
layers.Dropout(0.2),
layers.Dense(10, activation=”softmax”)
])
model.compile(optimizer=”adam”, loss=”sparsecategoricalcrossentropy”, metrics=[“accuracy”])
model.fit(xtrain, ytrain, epochs=10)
testloss, testacc = model.evaluate(xtest, ytest, verbose=2)
print(“测试集准确率:”, test_acc)
“`
原创文章,作者:魏茂晴,如若转载,请注明出处:https://www.wanglitou.cn/article_126225.html