《如何制作类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数据集了,可以去尽情的使用了。

相关推荐
正脉科工 CAE仿真43 分钟前
抗震计算 | 基于随机振动理论的结构地震响应计算
人工智能
看到我,请让我去学习1 小时前
OpenCV编程- (图像基础处理:噪声、滤波、直方图与边缘检测)
c语言·c++·人工智能·opencv·计算机视觉
码字的字节1 小时前
深度解析Computer-Using Agent:AI如何像人类一样操作计算机
人工智能·computer-using·ai操作计算机·cua
说私域2 小时前
互联网生态下赢家群体的崛起与“开源AI智能名片链动2+1模式S2B2C商城小程序“的赋能效应
人工智能·小程序·开源
董厂长5 小时前
langchain :记忆组件混淆概念澄清 & 创建Conversational ReAct后显示指定 记忆组件
人工智能·深度学习·langchain·llm
G皮T9 小时前
【人工智能】ChatGPT、DeepSeek-R1、DeepSeek-V3 辨析
人工智能·chatgpt·llm·大语言模型·deepseek·deepseek-v3·deepseek-r1
九年义务漏网鲨鱼9 小时前
【大模型学习 | MINIGPT-4原理】
人工智能·深度学习·学习·语言模型·多模态
元宇宙时间9 小时前
Playfun即将开启大型Web3线上活动,打造沉浸式GameFi体验生态
人工智能·去中心化·区块链
开发者工具分享9 小时前
文本音频违规识别工具排行榜(12选)
人工智能·音视频
产品经理独孤虾9 小时前
人工智能大模型如何助力电商产品经理打造高效的商品工业属性画像
人工智能·机器学习·ai·大模型·产品经理·商品画像·商品工业属性