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

相关推荐
冬奇Lab11 分钟前
码库知识库系列(03):代码 Embedding 策略——原始代码反而比注释增强更好
人工智能
冬奇Lab11 分钟前
开源项目第172期:agentOS — 以库的形式给 AI Agent 一个操作系统,冷启动 92x 更快、内存 47x 更少
人工智能·开源·agent
大橙子打游戏29 分钟前
make-goal:把长期 AI 任务从聊天记录里解放出来
人工智能
华盈生物34 分钟前
AI+病理:从切片到数据,空间多模态解析肿瘤微环境
人工智能·单细胞测序·空间单细胞蛋白组·单细胞组织原位空间蛋白组学·组织原位空间蛋白组学·超多重蛋白成像·ai+病理
IT_陈寒1 小时前
Vite热更新失效?你可能漏了这个配置
前端·人工智能·后端
禹亮科技1 小时前
制造业100㎡跨国技术评审会议室音视频整体解决方案(亿联+思必驰+讯飞AI落地实践)
人工智能·音视频·视频会议系统集成
2601_955759881 小时前
Claude API Key 交接与离职回收操作指南
人工智能
老云讲算力市场1 小时前
智算中心加速迈向超节点时代,奇点算力布局高效算力服务
人工智能·科技
潍坊老登1 小时前
甲方正在记着办理经营性ICP许可证,我三天二开了一个在线教育系统
人工智能
benben0442 小时前
大模型之基于TRL的ORPO对齐训练实战篇
人工智能