常见用于联邦学习的数据集【FL】【Datasets】

news2024/9/27 21:30:25

文章目录

  • 数据集
    • CIFAR-10/CIFAR-100:
      • CIFAR-10
      • CIFAR-100
      • 特点
      • 以CIFAR-10 为例:
      • 示例内容
        • `batches.meta`
        • `data_batch_1` 到 `data_batch_5`
        • `test_batch`
        • 图片转换Python脚本:
    • MNIST:
    • Fashion-MNIST:
    • EMNIST:
    • Google's Federated Learning Dataset:

数据集

在联邦学习中,模型训练的数据集通常分布在多个客户端设备上。以下是一些常用于联邦学习模型训练的数据集:

CIFAR-10/CIFAR-100:

CIFAR-10CIFAR-100 是两个广泛使用的图像数据集,常用于图像分类和计算机视觉任务。它们由加拿大多伦多大学的Alex Krizhevsky等人创建,旨在提供一个相对简单但具有挑战性的图像分类任务基准。

CIFAR-10

  • 内容:CIFAR-10包含60,000张32x32像素的彩色图像,分为10个类别,每个类别有6,000张图像。

  • 数据分布

    • 训练集:50,000张图像(每个类别5,000张)
    • 测试集:10,000张图像(每个类别1,000张)

CIFAR-100

  • 内容:CIFAR-100与CIFAR-10类似,也包含60,000张32x32像素的彩色图像,但它分为100个类别,每个类别有600张图像。
  • 数据分布
    • 训练集:50,000张图像(每个类别500张)
    • 测试集:10,000张图像(每个类别100张)

特点

  1. 图像尺寸:两者的数据集都包含32x32像素的图像。这种较小的尺寸使得数据集适合快速实验和基准测试。
  2. 类别数量:CIFAR-10只有10个类别,适用于较简单的分类任务;而CIFAR-100有100个类别,提供了更高的挑战性。
  3. 用途:CIFAR-10和CIFAR-100常用于训练和评估图像分类模型,特别是在深度学习和计算机视觉领域。它们也是许多算法的基准数据集,用于比较不同模型的性能。
    你可以从以下链接下载 CIFAR-10 和 CIFAR-100 数据集:
  • CIFAR-10 下载链接:CIFAR-10 数据集
  • CIFAR-100 下载链接:CIFAR-100 数据集

以CIFAR-10 为例:

下载好解压后显示如下:
在这里插入图片描述
在 CIFAR 数据集中,解压后的 batches.meta 文件用于存储数据集中类别的信息。具体来说,batches.meta 文件包含以下内容:

  1. 标签名称:文件中包含了数据集中所有类别的名称。这些名称对应于图像数据中的标签,帮助将模型预测的数字标签与实际类别名称进行匹配。

  2. 类别索引:文件还包含了每个类别的索引,这些索引与训练数据和测试数据中的标签值相对应。每个图像的标签是一个整数值,表示该图像的类别,batches.meta 文件帮助将这些整数标签转换为易于理解的类别名称。

在 CIFAR-10 中,batches.meta 文件包含10个类别名称,例如“飞机”、“汽车”等;而在 CIFAR-100 中,它包含100个类别的名称。

示例内容

batches.meta

batches.meta 文件的内容通常是一个 Python 的 pickle 格式文件,你可以用 Python 读取它,代码示例如下:

import pickle

# 读取 batches.meta 文件
with open('batches.meta', 'rb') as f:
    meta = pickle.load(f, encoding='latin1')

# 输出类别名称
print(meta['label_names'])

在 CIFAR-10 中,meta['label_names'] 将输出:

['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']

在这里插入图片描述

在 CIFAR-100 中,meta['label_names'] 将输出100个类别名称,如:

['apple', 'aquarium_fish', 'baby', 'banana', 'beetle', ...]
data_batch_1data_batch_5
  • 内容:这些文件包含训练集的数据。每个文件存储了一部分训练数据,共5个批次(batches),每个批次包含了 10,000 张 32x32 像素的彩色图像。每张图像都有一个对应的标签,表示它属于哪个类别。在这里插入图片描述

  • 结构

    • 数据:这些文件的每个记录包括图像数据和标签。图像数据存储为 32x32 的像素数组,每个像素有三个值(RGB)。
    • 标签:每张图像都有一个整数标签,指示它的类别。标签范围是 0 到 9,对于 CIFAR-10 数据集。
test_batch
  • 内容test_batch 文件包含了测试集的数据。这些数据与训练集的数据类似,但用于模型的评估。测试集包含 10,000 张图像,每张图像也有一个标签。
    在这里插入图片描述

  • 结构:和训练集的数据批次文件类似,test_batch 文件存储图像数据和标签。数据的存储格式与 data_batch_1data_batch_5 是相同的。

  • 文件格式:你可以用类似的方式读取 test_batch 文件,代码示例如下:

图片转换Python脚本:

下面我将教大家如何将图片转换为.jpg格式:

from PIL import Image
import numpy as np
import pickle
import os

# 解压缩,返回解压后的字典
def unpickle(file):
    with open(file, 'rb') as fo:
        data_dict = pickle.load(fo, encoding='latin1')
    return data_dict

# 保存图像
def save_image(img_array, filename):
    img = Image.fromarray(img_array)
    img.save(filename)

# 确保输出目录存在
if not os.path.exists('train'):
    os.makedirs('train')
if not os.path.exists('test'):
    os.makedirs('test')

# 生成训练集图片
for j in range(1, 6):
    dataName = f"data_batch_{j}"  # 读取当前目录下的data_batch文件
    Xtr = unpickle(dataName)
    print(dataName + " is loading...")

    for i in range(0, 10000):
        img = np.reshape(Xtr['data'][i], (3, 32, 32))
        img = img.transpose(1, 2, 0).astype(np.uint8)  # 转换为uint8类型
        picName = f'train/{Xtr["labels"][i]}_{i + (j - 1) * 10000}.jpg'
        save_image(img, picName)
    print(dataName + " loaded.")

print("test_batch is loading...")

# 生成测试集图片
testXtr = unpickle("test_batch")
for i in range(0, 10000):
    img = np.reshape(testXtr['data'][i], (3, 32, 32))
    img = img.transpose(1, 2, 0).astype(np.uint8)  # 转换为uint8类型
    picName = f'test/{testXtr["labels"][i]}_{i}.jpg'
    save_image(img, picName)
print("test_batch loaded.")

  1. 导入所需库

    from PIL import Image
    import numpy as np
    import pickle
    import os
    
    • PIL(Pillow):用于图像处理和保存。
    • numpy:用于处理图像数据的数组操作。
    • pickle:用于读取 CIFAR-10 数据集的序列化数据。
    • os:用于处理文件和目录操作。
  2. 解压缩函数

    def unpickle(file):
        with open(file, 'rb') as fo:
            data_dict = pickle.load(fo, encoding='latin1')
        return data_dict
    
    • unpickle 函数从指定的文件中读取 pickle 数据,并返回一个字典。该字典包含图像数据和标签。
  3. 保存图像函数

    def save_image(img_array, filename):
        img = Image.fromarray(img_array)
        img.save(filename)
    
    • save_image 函数将图像数组保存为 JPEG 文件。Image.fromarraynumpy 数组转换为 PIL 图像对象,然后使用 save 方法保存图像。
  4. 确保输出目录存在

    if not os.path.exists('train'):
        os.makedirs('train')
    if not os.path.exists('test'):
        os.makedirs('test')
    
    • 检查 traintest 目录是否存在。如果不存在,则创建这些目录,用于存储图像文件。
  5. 生成训练集图片

    for j in range(1, 6):
        dataName = f"data_batch_{j}"  # 读取当前目录下的data_batch文件
        Xtr = unpickle(dataName)
        print(dataName + " is loading...")
    
        for i in range(0, 10000):
            img = np.reshape(Xtr['data'][i], (3, 32, 32))
            img = img.transpose(1, 2, 0).astype(np.uint8)  # 转换为uint8类型
            picName = f'train/{Xtr["labels"][i]}_{i + (j - 1) * 10000}.jpg'
            save_image(img, picName)
        print(dataName + " loaded.")
    
    • 循环遍历训练数据的批次文件(data_batch_1data_batch_5)。
    • 对于每个批次文件,从中读取数据和标签。
    • 将每张图像数据重塑为 (3, 32, 32) 数组,然后转置为 (32, 32, 3) 的格式,并转换为 uint8 类型(以确保图像数据类型正确)。
    • 根据图像的标签和索引生成文件名,并将图像保存到 train 目录。
  6. 生成测试集图片

    print("test_batch is loading...")
    
    testXtr = unpickle("test_batch")
    for i in range(0, 10000):
        img = np.reshape(testXtr['data'][i], (3, 32, 32))
        img = img.transpose(1, 2, 0).astype(np.uint8)  # 转换为uint8类型
        picName = f'test/{testXtr["labels"][i]}_{i}.jpg'
        save_image(img, picName)
    print("test_batch loaded.")
    
    • 加载测试数据文件 test_batch
    • 处理和保存测试集中的每张图像,过程与训练集类似。
    • 图像保存到 test 目录,文件名由标签和索引组成。

在这里插入图片描述


MNIST:

这个数据集包含了手写数字的图像,常用于手写数字识别任务。由于其简单性和小规模,MNIST是联邦学习中一个经典的入门数据集。


Fashion-MNIST:

这是一个与MNIST类似的图像数据集,但包含了各种时尚产品的图像,用于服装分类任务。它提供了更复杂的分类任务,比MNIST略有挑战性。

EMNIST:

扩展的MNIST数据集,包含了手写字母的图像。适用于字母识别任务,提供了对更复杂字符分类的挑战。

Google’s Federated Learning Dataset:

谷歌提供了一些专门为联邦学习设计的数据集,用于训练和评估联邦学习算法。这些数据集涵盖了不同的任务和数据类型,如文本、图像等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1980966.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenCSG首发中文Chinese Mistral Large 2!

前沿科技速递🚀 🎉 震撼发布!OpenCSG再次微调发布CSG-Wukong-Chinese-Mistral-Large2-123B模型! 🔍 本次工作基于mistral-large-instruct-2407进行微调,采用了尖端的训练技术和优化策略,确保模型…

ZBrush

所有建模软件最开始需要搞清楚的就是基础操作,如旋转视角,放大缩小,移动等,一般可以看上手教程 zbrush中雕刻很重要的概念是笔刷:ZBrush笔刷介绍-CSDN博客 基本操作 编辑模式:T 清除画布:ctr…

Kibana未授权访问漏洞

8.Kibana未授权访问漏洞 Kibana如果允许外网访问且没有做安全登录认证,就会被外部任意访问,查看所有数据,造成数据泄露。在默认配置下,Kibana就可以访问Elasticsearch中的所有数据 步骤一:使用以下Fofa语句搜索Kibana产品并打开…

如何申请https证书

申请HTTPS证书通常遵循以下几个步骤,这些步骤可能会根据不同的证书颁发机构(CA)有所变化,但大体流程相似: 选择证书类型 根据你的需求选择合适的HTTPS证书类型。 常见的类型有: 域名验证型(DV):验证域名所有权&…

骨传导耳机哪个牌子好?五款业界高性能机型推荐,让你选购不迷茫!

骨传导耳机哪个牌子好?哪款耳机值得入手?作为一名资深的数码设备测评师,我极力推荐大家尝试下骨传导耳机,它无需直接堵塞耳道,既能起到保护听力的作用,又能在使用中保持对外界的环境感知。然而,…

python合并音视频-通过ffmpeg合并音视频

🌈所属专栏:【python】✨作者主页: Mr.Zwq✔️个人简介:一个正在努力学技术的Python领域创作者,擅长爬虫,逆向,全栈方向,专注基础和实战分享,欢迎咨询! 您的…

龙迅LT8713SX 高性能TYPE-C/DP转三端口DP1.4/HDMI 2.0转换器,带音频

龙迅LT8713SX描述: LT8713SX是一个高性能类型-C/DP1.4到Type-C/DP1.4/HDMI2.0转换器,具有三个可配置的DP1.4/HDMI2.0/DP输出接口和音频输出接口。LT8713SX同时支持显示端口™单流传输(SST)模式和多流传输(MST&#xf…

澳大利亚站 儿童水上玩具认证 AS/NZS ISO 8124.1:2002认证

什么是水上玩具? 此强制性标准适用的水上玩具应具备以下设计: 可承受 14 岁以下儿童的体重 供儿童在浅水中玩耍时使用 是否充气以及是否设计用于佩戴或以其他方式贴在身体上。 水上玩具包括但不限于: 充气新奇形状 适用于浅水的充气玩具…

探索ISO三大体系:企业卓越管理的核心之道

ISO 9001质量管理体系是国际上最广泛应用的质量管理标准,旨在帮助企业建立和实施有效的质量管理体系。通过ISO 9001认证,企业可以确保其产品和服务持续满足客户需求,从而赢得市场竞争的主动权。 实施ISO 9001质量管理体系,企业可以…

书生大模型学习笔记3 - 书生开源大模型链路体系

学习视频链接:书生浦语大模型全链路开源体系_哔哩哔哩_bilibili

算法力扣刷题记录 六十六【39. 组合总和】

前言 回溯章节第四篇。回顾:前三篇——组合问题:同一个集合中取元素;不同集合中取元素。 本文:记录 六十六【39. 组合总和】 一、题目阅读 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出…

生产环境中如何防止rm -ef 删库操作?

有这样一个故事 在一个风和日丽的下雨天,某猿带着还未从睡梦中醒来的脑子,打开了服务器,完成了一套华丽的rm -ef操作. 对于linux 很多人都认为将用root权限将系统“rm -rf /”整个盘的数据将会丢失,首先请不要紧张不要对数据盘执行任何操作。如果命令正在执行请立即…

Python 爬虫项目实战(一):爬取某云热歌榜歌曲

前言 网络爬虫(Web Crawler),也称为网页蜘蛛(Web Spider)或网页机器人(Web Bot),是一种按照既定规则自动浏览网络并提取信息的程序。爬虫的主要用途包括数据采集、网络索引、内容抓…

Linux:基础操作指令

Linux的操作特点:纯命令行(虽然也有图形化界面,但主要是工程师使用,意义不大) windows的操作特点:图形化界面(也有纯命令行的形式,但其更贴近大众,命令行学习成本高&…

云浮23家公立医院齐上阵,引进绿葆取袋机共筑绿色防线

在粤北大地,一场以绿色生态为笔,高质量发展为墨的壮丽画卷正徐徐展开。云浮,这座历史悠久而又充满活力的城市,正以前所未有的决心与行动,向着打造粤北生态发展新高地的宏伟目标团结奋进。 近日,一项惠及民生…

android 源码导入android studio

1.在源码中生成android studio 环境 下载好全包源码后,在源码根目录执行以下四条命令: 1. "source build/envsetup.sh" (source可以用 . 代替,即". build/envsetup.sh") 2. "lunch",并选择要编译的…

Python面试题汇总

Python面试题汇总 说明:下面的内容源于GitHub上名为interview_python的项目,对其内容进行了修订和补充。 [TOC] Python语言特性 1 Python的函数参数传递 看两个例子: a 1 def fun(a):a 2 fun(a) print a # 1 a [] def fun(a):a.append(1) fun(a…

不同专业方向如何在ChatGPT的帮助下完成选题

学境思源,一键生成论文初稿: AcademicIdeas - 学境思源AI论文写作 选择一个合适的论文题目是每个论文写作同学必须面对的重要任务。无论是历史专业、计算机科学专业,还是其他各个领域,找到一个既有研究价值又符合个人兴趣的选题往…

19.HTML总结

重点掌握表单的应用以及表单的初级验证 感谢您的观看,能和您一起学习是我最大的荣幸! 参考学习资料:HTML总结——狂神说 下面是我的微信公众号,与csdn同步更新,有需要的朋友可以关注一波~

ChatGPT等生成式AI在个性化教育方案的应用

生成式AI在个性化教学方案生成中的应用 生成式人工智能(Generative AI)在个性化教学方案生成中的应用主要体现在其能够根据学生的学习习惯、能力和偏好,定制化生成教学内容和活动。这种技术可以帮助教师更有效地设计教学计划,同时…