《如何制作类mnist的金融数据集》——3.生成index.ubyte文件

3 .生成index.ubyte文件

这里我主要参考了 这篇博客,他们把这块的知识解释得很到位了,我这里也没什么补充的。主要是拿到训练集图片与标签的index_ubyte文件和测试集的图片与标签的index_ubyte文件。共四个文件。

非常感谢我的参考博客:

https://blog.csdn.net/qq_44042678/article/details/131631917?spm=1001.2014.3001.5506

直接上代码:

python 复制代码
import os  # 用于操作系统相关的功能
from PIL import Image  # 用于处理图像
from array import *  # 用于数组操作
from random import shuffle  # 用于打乱数据顺序

# 图像数据的加载和保存路径
Names = [['./training-images', 'train'], ['./test-images', 'test']]

# 遍历输入的训练和测试数据集
for name in Names:

    # 创建图像数据和标签数据的数组
    data_image = array('B')
    data_label = array('B')

    # 获取文件列表
    FileList = []
    for dirname in os.listdir(name[0])[1:]:  # [1:] 用于排除 Mac OS 中的 .DS_Store 文件夹
        path = os.path.join(name[0], dirname)
        for filename in os.listdir(path):
            if filename.endswith(".png"):
                FileList.append(os.path.join(name[0], dirname, filename))

    # 打乱文件列表的顺序,有助于进一步划分验证集
    shuffle(FileList)

    # 遍历文件列表
    for filename in FileList:

        # 获取标签并打开图像文件
        label = int(filename.split('/')[2])
        Im = Image.open(filename)
        pixel = Im.load()
        width, height = Im.size

        # 遍历图像像素并将其添加到图像数据中
        for x in range(0, width):
            for y in range(0, height):
                data_image.append(pixel[y, x])

        data_label.append(label)  # 添加标签到标签数据中

    # 计算文件数并将其转换成十六进制形式
    hexval = "{0:#0{1}x}".format(len(FileList), 6)

    # 为标签数组添加头信息
    header = array('B')
    header.extend([0, 0, 8, 1, 0, 0])
    header.append(int('0x' + hexval[2:][:2], 16))
    header.append(int('0x' + hexval[2:][2:], 16))
    data_label = header + data_label

    # 为图像数组添加附加头信息
    if max([width, height]) <= 256:
        header.extend([0, 0, 0, width, 0, 0, 0, height])
    else:
        raise ValueError('Image exceeds maximum size: 256x256 pixels')

    header[3] = 3  # 修改图像数据的最高有效位 (MSB) (0x00000803)
    data_image = header + data_image

    # 打开并写入图像数据文件
    output_file = open(name[1] + '-images-idx3-ubyte', 'wb')
    data_image.tofile(output_file)
    output_file.close()

    # 打开并写入标签数据文件
    output_file = open(name[1] + '-labels-idx1-ubyte', 'wb')
    data_label.tofile(output_file)
    output_file.close()

# 压缩生成的文件
for name in Names:
    os.system('gzip ' + name[1] + '-images-idx3-ubyte')
    os.system('gzip ' + name[1] + '-labels-idx1-ubyte')

到这可以恭喜你已经拿到了你自己的类mnist数据集了,可以去尽情的使用了。

相关推荐
视觉语言导航29 分钟前
兼顾长、短视频任务的无人机具身理解!AirVista-II:面向动态场景语义理解的无人机具身智能体系统
人工智能·无人机·具身智能
墨绿色的摆渡人37 分钟前
pytorch小记(二十二):全面解读 PyTorch 的 `torch.cumprod`——累积乘积详解与实战示例
人工智能·pytorch·python
moonsims44 分钟前
低空态势感知:基于AI的DAA技术是低空飞行的重要安全保障-机载端&地面端
人工智能·安全
若叶时代1 小时前
数据分析_Python
人工智能·python·数据分析
虾球xz1 小时前
游戏引擎学习第286天:开始解耦实体行为
c++·人工智能·学习·游戏引擎
武子康1 小时前
大语言模型 11 - 从0开始训练GPT 0.25B参数量 MiniMind2 准备数据与训练模型 DPO直接偏好优化
人工智能·gpt·ai·语言模型·自然语言处理
羽凌寒2 小时前
图像对比度调整(局域拉普拉斯滤波)
人工智能·计算机视觉
大模型铲屎官2 小时前
【Python-Day 14】玩转Python字典(上篇):从零开始学习创建、访问与操作
开发语言·人工智能·pytorch·python·深度学习·大模型·字典
一点.点2 小时前
计算机视觉的简单介绍
人工智能·深度学习·计算机视觉
量子-Alex2 小时前
【目标检测】【Transformer】Swin Transformer
人工智能·目标检测·transformer