Tensorflow 训练自己的数据集将数据直接导入到内存


Posted in Python onJune 19, 2018

制作自己的训练集

下图是我们数据的存放格式,在data目录下有验证集与测试集分别对应iris_test, iris_train

Tensorflow 训练自己的数据集将数据直接导入到内存

为了向伟大的MNIST致敬,我们采用的数据名称格式和MNIST类似

Tensorflow 训练自己的数据集将数据直接导入到内存

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下执行如上代码后会返回如下信息

Tensorflow 训练自己的数据集将数据直接导入到内存

这样图像和标签信息就被load到了内存中,我们接下来就可以利用现有的模型对图像进行分类训练,模型的选择和训练的过程,我们会在后面进行讲解。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用Python压缩和解压缩zip文件的教程
May 06 Python
python使用win32com库播放mp3文件的方法
May 30 Python
简介Django框架中可使用的各类缓存
Jul 23 Python
Python中return self的用法详解
Jul 27 Python
TensorFlow实现模型评估
Sep 07 Python
详解关于Django中ORM数据库迁移的配置
Oct 08 Python
Python实现高斯函数的三维显示方法
Dec 29 Python
Python 多个图同时在不同窗口显示的实现方法
Jul 07 Python
浅谈Pycharm最有必要改的几个默认设置项
Feb 14 Python
Python爬虫谷歌Chrome F12抓包过程原理解析
Jun 04 Python
用ldap作为django后端用户登录验证的实现
Dec 07 Python
python实现视频压缩功能
Dec 18 Python
python如何爬取个性签名
Jun 19 #Python
详解TensorFlow查看ckpt中变量的几种方法
Jun 19 #Python
TensorFlow 滑动平均的示例代码
Jun 19 #Python
python3个性签名设计实现代码
Jun 19 #Python
TensorFlow 模型载入方法汇总(小结)
Jun 19 #Python
python3爬虫之设计签名小程序
Jun 19 #Python
Python GUI Tkinter简单实现个性签名设计
Jun 19 #Python
You might like
用PHP读取超大文件的实例代码
2012/04/01 PHP
php通过递归方式复制目录和子目录的方法
2015/03/13 PHP
简要剖析PHP的Yii框架的组件化机制的基本知识
2016/03/17 PHP
php计算给定日期所在周的开始日期和结束日期示例
2017/02/06 PHP
PHP实现数组根据某个单元字段排序操作示例
2018/08/01 PHP
javascript编程起步(第五课)
2007/01/10 Javascript
Jquery中getJSON在asp.net中的使用说明
2011/03/10 Javascript
jQuery函数的等价原生函数代码示例
2013/05/27 Javascript
node.js中的path.extname方法使用说明
2014/12/09 Javascript
JS如何实现文本框随文本的长度而增长
2015/07/30 Javascript
bootstrap网页框架的使用方法
2016/05/10 Javascript
JavaScript 计算笛卡尔积实例详解
2016/12/02 Javascript
微信小程序实现页面跳转传值以及获取值的方法分析
2017/12/18 Javascript
vue-router 实现导航守卫(路由卫士)的实例代码
2018/09/02 Javascript
在vue中使用vue-echarts-v3的实例代码
2018/09/13 Javascript
JS数组方法reverse()用法实例分析
2020/01/18 Javascript
JS实现可以用键盘方向键控制的动画
2020/12/11 Javascript
[02:50]2014DOTA2 TI预选赛预选赛 大神专访第一弹!
2014/05/21 DOTA
[53:43]VP vs NewBee Supermajor 胜者组 BO3 第三场 6.5
2018/06/06 DOTA
python实现无证书加密解密实例
2014/10/27 Python
python分割文件的常用方法
2014/11/01 Python
深入解析Python中的WSGI接口
2015/05/11 Python
Python中return语句用法实例分析
2015/08/04 Python
搭建Python的Django框架环境并建立和运行第一个App的教程
2016/07/02 Python
Python cookbook(数据结构与算法)将多个映射合并为单个映射的方法
2018/04/19 Python
Python3中详解fabfile的编写
2018/06/24 Python
python爬虫爬取淘宝商品比价(附淘宝反爬虫机制解决小办法)
2020/12/03 Python
详解CSS3新增的背景属性
2019/12/25 HTML / CSS
玉兰油美国官网:OLAY美国
2018/10/25 全球购物
怎样在程序里获得一个空指针
2015/01/24 面试题
21岁生日感言
2014/02/27 职场文书
会计求职信
2014/05/29 职场文书
合作与交流自我评价
2015/03/09 职场文书
光荣之路观后感
2015/06/12 职场文书
2016优秀教师先进个人事迹材料
2016/02/25 职场文书
MySQL图形化管理工具Navicat安装步骤
2021/12/04 MySQL