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 相关文章推荐
Python  连接字符串(join %)
Sep 06 Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
Sep 26 Python
Python中property属性实例解析
Feb 10 Python
Python实现购物车购物小程序
Apr 18 Python
Python错误处理操作示例
Jul 18 Python
python实现事件驱动
Nov 21 Python
python 并发编程 多路复用IO模型详解
Aug 20 Python
Python实现分数序列求和
Feb 25 Python
Django与pyecharts结合的实例代码
May 13 Python
python数据抓取3种方法总结
Feb 07 Python
python 提取html文本的方法
May 20 Python
一劳永逸彻底解决pip install慢的办法
May 24 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
javascript里模拟sleep(两种实现方式)
2013/01/25 Javascript
Jquery增加鼠标中间功能mousewheel的实例代码
2013/09/05 Javascript
JS获取地址栏参数的几种方法小结
2014/02/28 Javascript
javascript ajax的5种状态介绍
2014/08/18 Javascript
复制网页内容,粘贴之后自动加上网址的实现方法(脚本之家特别整理)
2014/10/16 Javascript
jquery实现的伪分页效果代码
2015/10/29 Javascript
使用伪命名空间封装保护独自创建的对象方法
2016/08/04 Javascript
JQuery手速测试小游戏实现思路详解
2016/09/20 Javascript
值得分享的bootstrap table实例
2016/09/22 Javascript
简单实现bootstrap选项卡效果
2017/02/08 Javascript
Vue.js项目部署到服务器的详细步骤
2017/07/17 Javascript
Form表单上传文件(type="file")的使用
2017/08/03 Javascript
详解基于 Nuxt 的 Vue.js 服务端渲染实践
2017/10/24 Javascript
利用jqprint插件打印页面内容的实现方法
2018/01/09 Javascript
JavaScript实现的DOM绘制柱状图效果示例
2018/08/08 Javascript
JS使用H5实现图片预览功能
2019/09/30 Javascript
python类继承用法实例分析
2015/05/27 Python
Python实现全角半角字符互转的方法
2016/11/28 Python
Python实现Youku视频批量下载功能
2017/03/14 Python
简单的python后台管理程序
2017/04/13 Python
Python2和Python3中print的用法示例总结
2017/10/25 Python
python多维数组切片方法
2018/04/13 Python
redis之django-redis的简单缓存使用
2018/06/07 Python
Python如何在DataFrame增加数值
2020/02/14 Python
CSS3线性渐变简单实现以及该属性在浏览器中的不同
2012/12/12 HTML / CSS
日本最大级玩偶手办购物:あみあみ Amiami
2018/04/23 全球购物
西班牙宠物用品和食品网上商店:Tiendanimal
2019/06/06 全球购物
Ajax实现页面无刷新留言效果
2021/03/24 Javascript
11月红领巾广播稿
2014/01/17 职场文书
网络编辑求职信
2014/04/30 职场文书
安全生产月活动总结
2014/05/04 职场文书
教师工作总结范文2014
2014/11/10 职场文书
捐资助学感谢信
2015/01/21 职场文书
驾驶员管理制度范本
2015/08/06 职场文书
500字作文之难忘的同学
2019/12/20 职场文书
nginx访问报403错误的几种情况详解
2022/07/23 Servers