TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现


Posted in Python onFebruary 17, 2020

TensorFlow官网给的cifar-10教程,是卷积神经网络入门的好例子,有时想直接拿这个模型来跑自己的数据,却发现他的数据类型不是常见的,我们一般获取的数据(图片)以文件夹分类存好,或者直接在文件名上注明了类别,这时就要通过文件名的来获取标签,显然直接用cifar-10的方式是不行的。

这里当然可以吧数据转化成cifar-10那种类型,不过个人不喜欢这种方式吧。

另一种就还是老办法,对文件名进行处理,获取标签。

其实处理文件名,对python来说,很简单。只是刚接触卷积神经网络的,可能并不熟悉TensorFlow的用法(本人),怎么修改代码才能以这种方式读取数据进队列呢?

看代码:

import tensorflow as tf
import os

#这就是数据所在的路径,其子目录是若干个文件夹,分别对应一类数据,
#文件夹下存放的就是对应那一类的数据。
#命名方式:1,2,3,4····(代表不同的类别,简单粗暴)
path="./data"

classes=2#数据类别的数量
imagesList=[]#存放图片数据的列表(这里存放的仅仅是图片所在的路径,并不是图片)
labelsList=[]#存放标签,与上面图片是一一对应的
filepaths=[os.path.join(path,"%d"%i)for i in range (1,classes+1)]#存放path的子目录的路径
for p in filepaths:
 for filename in os.listdir(p):#获取图片的名字
  imagesList.append(os.path.join(p,filename))#图片名和路径拼接,然后如队列
  labelsList.append(int(p[-1]))#这里是按照命名的方式,p的最后一个字符就是类别

image = tf.cast(imagesList,tf.string)#转化成tf的数据类型
label = tf.cast(labelsList,tf.int64)
queue = tf.train.slice_input_producer([image,label])#生成队列,这里也就关键的地方
label = queue[1]
image_c = tf.read_file(queue[0])
image = tf.image.decode_jpeg(image_c,channels = 3)
training_image_data = tf.image.resize_images(image, [2, 2]) #这个函数是重塑行,具体干嘛不清楚,不用有时报错
example_batch, label_batch = tf.train.shuffle_batch([training_image_data,label], batch_size=1, capacity=2, min_after_dequeue=1) #生成Batch
# 运行Graph 
with tf.Session() as sess: 
 coord = tf.train.Coordinator() #创建一个协调器,管理线程 
 threads = tf.train.start_queue_runners(coord=coord) #启动QueueRunner, 此时文件名队列已经进队。 
 for i in range(6): 
  e_val,l_val = sess.run([example_batch, label_batch]) 
  print (e_val,l_val)#弄些简单的数据来测试效果。

 coord.request_stop() 
 coord.join(threads)

以上这篇TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
以911新闻为例演示Python实现数据可视化的教程
Apr 23 Python
Python中特殊函数集锦
Jul 27 Python
Ubuntu下创建虚拟独立的Python环境全过程
Feb 10 Python
Python数据拟合与广义线性回归算法学习
Dec 22 Python
python之pandas用法大全
Mar 13 Python
linux环境下Django的安装配置详解
Jul 22 Python
Python浮点数四舍五入问题的分析与解决方法
Nov 19 Python
django admin后管定制-显示字段的实例
Mar 11 Python
python实现遍历文件夹图片并重命名
Mar 23 Python
如何基于python3和Vue实现AES数据加密
Mar 27 Python
python中JWT用户认证的实现
May 18 Python
Python坐标轴操作及设置代码实例
Jun 04 Python
Django 项目通过加载不同env文件来区分不同环境
Feb 17 #Python
Python cookie的保存与读取、SSL讲解
Feb 17 #Python
Python中用pyinstaller打包时的图标问题及解决方法
Feb 17 #Python
Python交互环境下打印和输入函数的实例内容
Feb 16 #Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
Feb 16 #Python
基于python实现微信好友数据分析(简单)
Feb 16 #Python
Python如何将图像音视频等资源文件隐藏在代码中(小技巧)
Feb 16 #Python
You might like
用PHP和ACCESS写聊天室(四)
2006/10/09 PHP
PHP为表单获取的URL 地址预设 http 字符串函数代码
2010/05/26 PHP
深入探讨<br />和 \r\n两者有什么区别??
2013/06/05 PHP
PHP面向对象之事务脚本模式(详解)
2017/06/07 PHP
php数据库的增删改查 php与javascript之间的交互
2017/08/31 PHP
在Javascript中定义对象类别
2006/12/22 Javascript
javascript void(0)的妙用
2009/10/21 Javascript
jQuery $.data()方法使用注意细节
2012/12/31 Javascript
Node.js和PHP根据ip获取地理位置的方法
2014/03/14 Javascript
javascript判断office版本示例
2014/04/11 Javascript
JavaScript实现twitter puddles算法实例
2014/12/06 Javascript
基于jQuery实现的文字按钮表单特效整理
2014/12/07 Javascript
node.js中的fs.read方法使用说明
2014/12/17 Javascript
理解JavaScript中Promise的使用
2016/01/18 Javascript
jQuery通过写入cookie实现更换网页背景的方法
2016/04/15 Javascript
jquery 属性选择器(匹配具有指定属性的元素)
2016/09/06 Javascript
利用jquery正则表达式在页面验证url网址输入是否正确
2017/04/04 jQuery
深入浅出webpack教程系列_安装与基本打包用法和命令参数详解
2017/09/10 Javascript
angularjs路由传值$routeParams详解
2020/09/05 Javascript
总结js函数相关知识点
2018/02/27 Javascript
Node.js readline 逐行读取、写入文件内容的示例
2018/03/01 Javascript
JavaScript原型对象原理与应用分析
2018/12/27 Javascript
小程序实现列表多个批量倒计时
2021/01/29 Javascript
在微信小程序中使用vant的方法
2019/06/07 Javascript
python简单的函数定义和用法实例
2015/05/07 Python
一个基于flask的web应用诞生 使用模板引擎和表单插件(2)
2017/04/11 Python
为什么选择python编程语言入门黑客攻防 给你几个理由!
2018/02/02 Python
台湾团购、宅配和优惠券:17Life
2017/08/14 全球购物
Halston Heritage官网:简洁的日装,稍显奢华的晚装
2018/11/20 全球购物
编写用C语言实现的求n阶阶乘问题的递归算法
2014/10/21 面试题
程序员经常用到的UNIX命令
2015/04/13 面试题
汽车检测与维修专业求职信
2013/10/30 职场文书
给女儿的表扬信
2014/01/18 职场文书
迟到检讨书300字
2014/02/14 职场文书
处罚决定书范文
2015/06/24 职场文书
2019西餐厅创业计划书范文!
2019/07/12 职场文书