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的Flask框架应用程序实现使用QQ账号登录的方法
Jun 07 Python
Python判断某个用户对某个文件的权限
Oct 13 Python
Python处理命令行参数模块optpars用法实例分析
May 31 Python
Python将一个CSV文件里的数据追加到另一个CSV文件的方法
Jul 04 Python
Python多继承原理与用法示例
Aug 23 Python
Python判断变量名是否合法的方法示例
Jan 28 Python
python实现函数极小值
Jul 10 Python
IronPython连接MySQL的方法步骤
Dec 27 Python
Python常用断言函数实例汇总
Nov 30 Python
PyQt 如何创建自定义QWidget
Mar 24 Python
python基础之停用词过滤详解
Apr 21 Python
总结三种用 Python 作为小程序后端的方式
May 02 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图片上传存储源码并且可以预览
2011/08/26 PHP
php绘图之生成饼状图的方法
2015/01/24 PHP
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
2018/06/22 PHP
php文件包含的几种方式总结
2019/09/19 PHP
javascript div 遮罩层封锁整个页面
2009/07/10 Javascript
微信JSSDK上传图片
2015/08/23 Javascript
JS实现带有抽屉效果的产品类网站多级导航菜单代码
2015/09/15 Javascript
js实现文字垂直滚动和鼠标悬停效果
2015/12/31 Javascript
利用JS判断字符串是否含有数字与特殊字符的方法小结
2016/11/25 Javascript
js canvas实现简单的图像扩散效果
2020/06/28 Javascript
js 客户端打印html 并且去掉页眉、页脚的实例
2017/11/03 Javascript
webpack打包node.js后端项目的方法
2018/03/10 Javascript
JavaScript创建对象的四种常用模式实例分析
2019/01/11 Javascript
世界上最短的数字判断js代码
2019/09/09 Javascript
js实现简单进度条效果
2020/03/25 Javascript
koa中间件核心(koa-compose)源码解读分析
2020/06/15 Javascript
JS常用跨域方法实现原理解析
2020/12/09 Javascript
python 文件与目录操作
2008/12/24 Python
python logging类库使用例子
2014/11/22 Python
解决Python3.5+OpenCV3.2读取图像的问题
2018/12/05 Python
python最小生成树kruskal与prim算法详解
2019/01/17 Python
使用python实现离散时间傅里叶变换的方法
2019/09/02 Python
python itsdangerous模块的具体使用方法
2020/02/17 Python
pytorch掉坑记录:model.eval的作用说明
2020/06/23 Python
使用python库xlsxwriter库来输出各种xlsx文件的示例
2020/09/01 Python
莫斯科高科技在线商店:KremlinStore
2019/03/13 全球购物
创业资金计划书
2014/02/06 职场文书
《两只鸟蛋》教学反思
2014/02/10 职场文书
升旗仪式演讲稿
2014/05/08 职场文书
汽车维修求职信
2014/06/15 职场文书
护理学专业求职信
2014/06/29 职场文书
妈妈活动方案
2014/08/15 职场文书
节约用电通知
2015/04/25 职场文书
pytorch通过训练结果的复现设置随机种子
2021/06/01 Python
详解Python自动化之文件自动化处理
2021/06/21 Python
如何使用 resize 实现图片切换预览功能
2021/08/23 HTML / CSS