制作自己的python版本的类CIFAR10数据集「建议收藏」

制作自己的python版本的类CIFAR10数据集「建议收藏」之前发布的仿照CIFAR10数据集格式,制作自己的数据集(C++版本),得到一些网友的关注,并且不断有网友在评论区或者私信里询问,怎样制作python版本的。趁着下午有点闲时间,把制作方法整理发布在这里,希望对大家有所帮助。

大家好,又见面了,我是你们的朋友全栈君。




本系列文章由
@yhl_leo
出品,转载请注明出处。


文章链接:
http://blog.csdn.net/yhl_leo/article/details/71357097



之前发布的仿照CIFAR10数据集格式,制作自己的数据集 (C++版本),得到一些网友的关注,并且不断有网友在评论区或者私信里询问,怎样制作python版本的。趁着下午有点闲时间,把制作方法整理发布在这里,希望对大家有所帮助。

源码地址GitHub: yhlleo/cifar10Dataset

关于python 版本的CIFAR10的数据格式,官网上已经介绍:

data – a 10000×3072 numpy array of uint8s. Each row of the array stores a 32×32 colour image. The first 1024 entries contain the red channel values, the next 1024 the green, and the final 1024 the blue. The image is stored in row-major order, so that the first 32 entries of the array are the red channel values of the first row of the image.
labels – a list of 10000 numbers in the range 0-9. The number at index i indicates the label of the ith image in the array data.

因此,想要制作自己的数据集,只需要把data, label准备好就可以,另外,我们可以读取cifar10存储好的文件,查看其数据格式,以data_batch_1为例(可以通过cifar10_read.py读取):

{
  
  'data': array([[ 59,  43,  50, ..., 140,  84,  72],
       [154, 126, 105, ..., 139, 142, 144],
       [255, 253, 253, ...,  83,  83,  84],
       ..., 
       [ 71,  60,  74, ...,  68,  69,  68],
       [250, 254, 211, ..., 215, 255, 254],
       [ 62,  61,  60, ..., 130, 130, 131]], dtype=uint8), 
'labels': [6, 9, 9, 4, 1, 1, 2, 7, 8, 3, 4, 7, 7, 2, 9, 9, 9, 3, 2, 6, 4, 3, 6, 6, 2, 6, 3, 5, 4, 0, 0, 9, 1, 3, 4, 0, 3, 7, 3, 3, 5, 2, 2, 7, 1, 1, 1, 2, 2, 0, 9, 5, 7, 9, 2, 2, 5, 2, 4, 3, 1, 1, 8, 2, 1, 1, 4, 9, 7, 8, 5, 9, 6, 7, 3, 1, 9, 0, 3, 1, 3, 5, 4, 5, 7, 7,  ... , 9, 8, 9, 4, 4, 7, 1, 0, 4, 3, 6, 3, 9, 8, 3, 6, 8, 3, 6, 6, 2, 6, 7, 3, 0, 0, 0, 2, 5, 1, 2, 9, 2, 2, 1, 6, 3, 9, 1, 1, 5], 
'batch_label': 'training batch 1 of 5', 
'filenames': ['leptodactylus_pentadactylus_s_000004.png', 'camion_s_000148.png', 'tipper_truck_s_001250.png', ... , 'truck_s_000036.png', 'car_s_002296.png', 'estate_car_s_001433.png', 'cur_s_000170.png']}

很明显,python版本存储成了一个dict,其中key包括:

  • data, 存放图像数据文件,是一个nx3072的数组;
  • labels, 存放图像对应的label,是一个nx1的数组;
  • batch_label, 说明信息;
  • filenames, 文件名列表。

详细的代码内容,可以查看实现代码,另外demo.py中提供了测试数据,这里把读取的文件结果输出:

{
  
  'data': array([[255, 255, 255, ..., 255, 255, 255],
       [255, 255, 255, ..., 255, 255, 255]], dtype=uint8), 
'label': [0, 1], 
'batch_label': 'training batch 0 of 1', 
'filenames': ['a.png', 'b.png']}

跟官方数据的输出格式一致,虽然没有训练测试,但是理论上应该没问题,大家在测试的过程中,如果遇到问题,欢迎指出。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/152066.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • s一般怎么称呼自己的m_教师节到了,聊一聊该怎么称呼尊敬的老师[通俗易懂]

    s一般怎么称呼自己的m_教师节到了,聊一聊该怎么称呼尊敬的老师[通俗易懂]01.Teacher当面看到老师不能直接叫teacher哦,但是你可以用Mr/Mrs/Miss/Ms+surname(姓)的方式来称呼老师们,这四个称谓适用的人群如下:Mr/ˈmɪstər/:(已婚/未婚)男性Mrs/ˈmɪsɪz/:(已婚)女性Miss/mɪs/:(未婚)女性Ms/mɪz/:(已婚/未婚)女性一般来讲,因为Ms不透露女性的婚姻状态,所以用其称呼女…

    2022年6月23日
    74
  • phpstorm2021 激活码【永久激活】

    (phpstorm2021 激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlML…

    2022年3月21日
    148
  • 遍历ArrayList的三种方法

    遍历ArrayList的三种方法importjava.util.*;publicclassTest{publicstaticvoidmain(String[]args){List<String>list=newArrayList<String>();list.add(“Hello”);list.add(“World”);list.add(“Hello”);//第一种方法:.

    2022年7月22日
    7
  • 计算机病毒相关参考文献,计算机病毒参考文献[通俗易懂]

    计算机病毒相关参考文献,计算机病毒参考文献[通俗易懂]此栏目涵盖与参考文献和计算机和病毒相关的例文,免费为你研究计算机病毒文献综述提供有关参考资料。关键词:网络参考文献;选择;引用;规范化摘要:随着网络环境及网络信息资源的不断建设和发展,学术研究中以网络文献作为引文已成为一种势不可挡的发展。摘要:当今社会,随着互联网技术的高速发展,人们的物质文化生活也随之取得了较大的丰富。然而,在面对互联网高速发展今天,整个互联网也面临着各种病毒的。摘要:如今科学技…

    2022年5月3日
    40
  • CriticalSection_protection initialization

    CriticalSection_protection initialization如果EnterCriticalSection将一个线程置于等待状态,那么该线程在很长时间内就不能再次被调度。实际上,在编写得不好的应用程序中,该线程永远不会再次被赋予CPU时间。TryEnterCriticalSection函数决不允许调用线程进入等待状态。它的返回值能够指明调用线程是否能够获得对资源的访问权。TryEnterCriticalSection发现该资源已经被另一个线程访问,它就返回F

    2022年9月20日
    1
  • 什么软件自动刷点击量(不同的IP在刷网站)

    网络爬虫是目前各大企业获取数据的主要方式,很多人都知道爬虫使用代理IP,但对其中的原因却知之甚少。那为什么代理IP能帮助网络爬虫呢?1、已解决IP限制。目前大部分网站都有反爬虫技术,最常见的限制是IP接入。假如本站点的IP被封掉,可以用代理IP换IP后继续爬虫。2、提高爬虫的效率。如今有了工作效率的要求,不仅是使用单一的爬虫,为了提高爬虫的效率,可以使用多个爬虫来爬虫,这需要更多的IP,同时也需要IP的更换,自然离不开代理IP。以上介绍代理IP对网络爬虫的帮助关键,大家都有了认识,找代理IP时要找高.

    2022年4月13日
    168

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号