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安装以及IDE的配置教程
Apr 29 Python
使用Python压缩和解压缩zip文件的教程
May 06 Python
python中字符串变二维数组的实例讲解
Apr 03 Python
使用Python通过win32 COM打开Excel并添加Sheet的方法
May 02 Python
详解python Todo清单实战
Nov 01 Python
对Python之gzip文件读写的方法详解
Feb 08 Python
python django框架中使用FastDFS分布式文件系统的安装方法
Jun 10 Python
Python用Try语句捕获异常的实例方法
Jun 26 Python
python scatter函数用法实例详解
Feb 11 Python
基于python-pptx库中文文档及使用详解
Feb 14 Python
Python读写Excel表格的方法
Mar 02 Python
Python实现学生管理系统(面向对象版)
Jun 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
php adodb分页实现代码
2009/03/19 PHP
php实现执行某一操作时弹出确认、取消对话框
2013/12/30 PHP
微信支付PHP SDK ―― 公众号支付代码详解
2016/09/13 PHP
thinkphp制作404跳转页的简单实现方法
2016/09/22 PHP
关于laravel5.5的定时任务详解(demo)
2019/10/23 PHP
javascript实现回车键提交表单方法总结
2015/01/10 Javascript
详解javascript的变量与标识符
2016/01/04 Javascript
JavaScript字符串常用的方法
2016/03/10 Javascript
深入探究JavaScript中for循环的效率问题及相关优化
2016/03/13 Javascript
AngularJS equal比较对象实例详解
2016/09/14 Javascript
JS实现HTML标签转义及反转义
2020/04/14 Javascript
使用jQuery ajaxupload插件实现无刷新上传文件
2017/04/23 jQuery
Vue条件循环判断+计算属性+绑定样式v-bind的实例
2018/09/18 Javascript
深入理解Vue.js轻量高效的前端组件化方案
2018/12/10 Javascript
详解50行代码,Node爬虫练手项目
2019/04/22 Javascript
JavaScript 函数用法详解【函数定义、参数、绑定、作用域、闭包等】
2020/05/12 Javascript
vue-quill-editor 自定义工具栏和自定义图片上传路径操作
2020/08/03 Javascript
微信小程序通过websocket实时语音识别的实现代码
2020/08/19 Javascript
[01:18]一目了然!DOTA2DotA快捷操作对比第一弹
2014/07/01 DOTA
[48:22]VGJ.S vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python修改Excel数据的实例代码
2013/11/01 Python
Python引用(import)文件夹下的py文件的方法
2014/08/26 Python
Python创建二维数组实例(关于list的一个小坑)
2017/11/07 Python
疯狂上涨的Python 开发者应从2.x还是3.x着手?
2017/11/16 Python
python实现外卖信息管理系统
2018/01/11 Python
[原创]windows下Anaconda的安装与配置正解(Anaconda入门教程)
2018/04/05 Python
python实现各种插值法(数值分析)
2019/07/30 Python
Django 响应数据response的返回源码详解
2019/08/06 Python
Pytorch之Variable的用法
2019/12/31 Python
英国天然抗衰老护肤品品牌:Nakin Skin Care
2019/04/16 全球购物
美国健康和保健平台:healtop
2020/07/02 全球购物
护理专业自荐信
2013/12/03 职场文书
应届毕业生求职自荐书
2014/01/03 职场文书
安全生产检查通报
2014/01/29 职场文书
2015年司法所工作总结
2015/04/27 职场文书
Python自动化爬取天眼查数据的实现
2021/06/15 Python