mnist多个数字显示在一张图片并保存图片

本文介绍了一种使用Python和Matplotlib库从MNIST数据集中加载并可视化手写数字图像的方法。通过将数据集中的图像重塑并显示,可以直观地查看训练和测试集中的样本。此过程有助于理解数据分布和质量,对于进行深度学习模型训练前的数据预处理至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import os
import scipy
import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf

data_path = r"D:\PycharmProjects\dataset"

def load_mnist(is_training=True):
    path = os.path.join(data_path, 'mnist')
    if is_training:
        fd = open(os.path.join(path, 'train-images-idx3-ubyte'))
        loaded = np.fromfile(file=fd, dtype=np.uint8)
        trainX = loaded[16:].reshape((60000, 28, 28, 1)).astype(np.float32)

        fd = open(os.path.join(path, 'train-labels-idx1-ubyte'))
        loaded = np.fromfile(file=fd, dtype=np.uint8)
        trY = loaded[8:].reshape((60000)).astype(np.int32)

        trX = trainX / 255.

        return trX, trY
    else:
        fd = open(os.path.join(path, 't10k-images-idx3-ubyte'))
        loaded = np.fromfile(file=fd, dtype=np.uint8)
        teX = loaded[16:].reshape((10000, 28, 28, 1)).astype(np.float)

        fd = open(os.path.join(path, 't10k-labels-idx1-ubyte'))
        loaded = np.fromfile(file=fd, dtype=np.uint8)
        teY = loaded[8:].reshape((10000)).astype(np.int32)

        teX = teX / 255.
        return teX, teY


teX, teY= load_mnist(is_training=False) # 获取数据

for j in range(400):
    fig, ax = plt.subplots(nrows=5, ncols=5, sharex='all', sharey='all', ) # 一张图片有5行5列个子图
    ax = ax.flatten()
    for i in range(25):
        img = teX[i+j*25].reshape(28, 28)
        ax[i].imshow(img, cmap='Greys', interpolation='nearest')
    ax[0].set_xticks([])
    ax[0].set_yticks([])
    plt.tight_layout()  # 自动紧凑布局
    plt.savefig(r"D:\test\%d.png" % j) # 要放在plt.show()前面,否则保存的是空白图片
    plt.show()

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值