Tensorflow 训练自己的数据集将数据直接导入到内存
作者:ruyiweicas 发布时间:2023-08-18 14:30:14
制作自己的训练集
下图是我们数据的存放格式,在data目录下有验证集与测试集分别对应iris_test, iris_train
为了向伟大的MNIST致敬,我们采用的数据名称格式和MNIST类似
classification_index.jpg
图像的index都是5的整数倍是因为我们选择测试集的原则是每5个样本,选择一个样本作为测试集,其余的作为训练集和验证集
生成这样数据的过程相对简单,如果有需要python代码的,可以给我发邮件,或者在我的github下载
至此,我们的训练集,测试集,验证集就生成成功了,之所以我们的文件夹只有训练集和测试集是因为我们在后续的训练过程中,会在训练集中分出一部分作为验证集,所以两者暂时合称为训练集
将数据集写入到Tensorflow中
1. 直接写入到队列中
import tensorflow as tf
import numpy as np
import os
train_dir = '/home/ruyiwei/data/iris_train/'#your data directory
def get_files(file_dir):
'''
Args:
file_dir: file directory
Returns:
list of images and labels
'''
iris = []
label_iris = []
contact = []
label_contact = []
for file in os.listdir(file_dir):
name = file.split('_')
if name[0]=="iris":
iris.append(file_dir + file)
label_iris.append(0)
else:
contact.append(file_dir + file)
label_contact.append(1)
print('There are %d iris\nThere are %d contact' %(len(iris), len(contact)))
image_list = np.hstack((iris, contact))
label_list = np.hstack((label_iris, label_contact))
temp = np.array([image_list, label_list])
temp = temp.transpose()
np.random.shuffle(temp)
image_list = list(temp[:, 0])
label_list = list(temp[:, 1])
label_list = [int(i) for i in label_list]
return image_list, label_list
为了大家更方便的理解和修改代码,我们对代码进行讲解如下
1-3行 : 导入需要的模块
5行: 定义训练集合的位置,这个需要根据自己的机器进行修改
7行: 定义函数 get_files
18行: os.listdir(file_dir) 获取指定目录file_dir下的所有文件名词,也就是我们的训练图片名称
18行:for file in os.listdir(file_dir): 遍历所有的图片
19行: name为一个数组,由于我们根据MINIST来定制的图片名词,所以file.split(‘_')会将图像名称分为两部分,第一部分为classification,通过name[0]来获得分类信息。
21行、24行:iris.append(file_dir + file)/contact.append(file_dir + file)将图像的绝对路径放入到iris/contact中
22行、25行:label_iris.append(0)/label_contact.append(1)给对应的图片贴标签
28-29行:将二分类的图像与标签压入到list中
31-33行:合并二分类图像,然后打乱
38行:返回打乱后对应的图像与标签
在spyder下执行如上代码后会返回如下信息
这样图像和标签信息就被load到了内存中,我们接下来就可以利用现有的模型对图像进行分类训练,模型的选择和训练的过程,我们会在后面进行讲解。
来源:https://blog.csdn.net/best_coder/article/details/70141075


猜你喜欢
- 1 前言之前已经介绍了基金的变动信息,但是这些基金都是属于场外的,今天我们要介绍的是一个带门槛的投资产品-ETF。只有开立证券账户的玩家才能
- 一、访问者模式(Visitor Pattern)数据结构中保存着许多元素,当我们希望改变一种对元素的处理方式时,要避免重复的修改数据结构。那
- 前言在本文中,我们将介绍一些常见的分布并通过Python 代码进行可视化以直观地显示它们。概率和统计知识是数据科学和机器学习的核心;&nbs
- 开启Web服务1.基本方式Python中自带了简单的服务器程序,能较容易地打开服务。在python3中将原来的SimpleHTTPServe
- 一、Oracle分析函数简介:在日常的生产环境中,我们接触得比较多的是OLTP系统(即Online Transaction Process)
- 无刷新改变路由的两种方法通过hash改变路由代码window.location.hash='edit'效果http://xx
- Celery文档参考:http://docs.jinkan.org/docs/celery/参考文章:https://www.jb51.ne
- 人的大脑通过双眼来辨别视觉图形获取信息。大脑根据储存的经验,将所看到的视觉图形建立起优先级。由此可见,一个良好的视觉设计可以帮助大脑迅速有效
- 导语哈喽!哈喽!我是木木子!今日游戏更新——中国象棋上线啦!中国象棋是一种古老的棋类游戏,大约有两千
- 本文实例为大家分享了python实现简单贪吃蛇的具体代码,供大家参考,具体内容如下1. 导入游戏库import pgzrunimport r
- 前言在目标检测中,数据集常常使用labelimg标注,会生成xml文件。本文旨在根据xml标注文件来裁剪目标,以达到去除背景信息的目的。xm
- 1、我们使用正常的输出语句得到的是(输出结果:division by zero)虽然得到了错误的日志输出,但是不知道为什么出错,也不能定位具
- 本文实例讲述了Python图像处理之图像的缩放、旋转与翻转实现方法。分享给大家供大家参考,具体如下:图像的几何变换,如缩放、旋转和翻转等,在
- python使用函数改变list函数内改变外部的一个list如果这么写def rotate(nums, k): l
- 最近花些时间学习了一下Python,并写了一个多线程的爬虫程序来获取电影天堂上资源的迅雷下载地址,代码已经上传到GitHub上了,需要的同学
- 用yum更新PHP,只需用一条命令就可以搞定: #yum update php 但问题来了,使用此命令后,系统告诉我,没有发现可更新的包。而
- 豆瓣镜像源:https://pypi.douban.com/simple/file >> setting最后点击OK即可PyCh
- 本文实例讲述了Python多重继承的方法解析执行顺序。分享给大家供大家参考,具体如下:任何实现多重继承的语言都要处理潜在的命名冲突, 这种冲
- 假设有一个可迭代对象,现在想要对它内部的元素进行排序,我们一般会使用内置函数 sorted,举个例子:data = (3
- 前言这是俺写的第一篇关于python的博客,分享一下我所整合的python中的随机数函数,就当作是自己的一个笔记,也可以供像我一样的pyth