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调用新浪微博API项目实践
Jul 28 Python
python操作redis的方法
Jul 07 Python
详谈Numpy中数组重塑、合并与拆分方法
Apr 17 Python
python的中异常处理机制
Aug 30 Python
tensorflow实现简单逻辑回归
Sep 07 Python
用python 实现在不确定行数情况下多行输入方法
Jan 28 Python
Python 之 Json序列化嵌套类方式
Feb 27 Python
django中的数据库迁移的实现
Mar 16 Python
Python+redis通过限流保护高并发系统
Apr 15 Python
TensorFlow tf.nn.softmax_cross_entropy_with_logits的用法
Apr 19 Python
Scrapy基于scrapy_redis实现分布式爬虫部署的示例
Sep 29 Python
python 写一个水果忍者游戏
Jan 13 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
短波问题解答
2021/02/28 无线电
PHP sprintf() 函数的应用(定义和用法)
2012/06/29 PHP
浅谈Laravel队列实现原理解决问题记录
2017/08/19 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
[原创]保存的js无法执行的解决办法
2007/02/25 Javascript
Jquery中getJSON在asp.net中的使用说明
2011/03/10 Javascript
ASP.NET jQuery 实例11 通过使用jQuery validation插件简单实现用户登录页面验证功能
2012/02/03 Javascript
JS 修改URL参数(实现代码)
2013/07/08 Javascript
如何在父窗口中得知window.open()出的子窗口关闭事件
2013/10/15 Javascript
简述JavaScript对传统文档对象模型的支持
2015/06/16 Javascript
给before和after伪元素设置js效果的方法
2015/12/04 Javascript
快速解决Canvas.toDataURL 图片跨域的问题
2016/05/10 Javascript
详解Javascript函数声明与递归调用
2016/10/22 Javascript
利用JS屏蔽页面中的Enter按键提交表单的方法
2016/11/25 Javascript
最简单的JS实现json转csv的方法
2019/01/10 Javascript
使用jQuery实现购物车
2020/10/29 jQuery
vue实现登录功能
2020/12/31 Vue.js
小程序实现列表倒计时功能
2021/01/29 Javascript
[26:40]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第一局
2016/02/25 DOTA
Django应用程序中如何发送电子邮件详解
2017/02/04 Python
python中的break、continue、exit()、pass全面解析
2017/08/05 Python
Python测试人员需要掌握的知识
2018/02/08 Python
解决python线程卡死的问题
2019/02/18 Python
Python基于paramunittest模块实现excl参数化
2020/04/26 Python
python简单实现9宫格图片实例
2020/09/03 Python
使用SVG实现提示框功能的示例代码
2020/06/05 HTML / CSS
英国快时尚女装购物网站:PrettyLittleThing
2018/08/15 全球购物
党员个人对照检查材料范文
2014/09/24 职场文书
公司离职证明范本
2014/10/17 职场文书
2015年小学生暑假总结
2015/07/13 职场文书
有关保护环境的宣传标语100条
2019/08/07 职场文书
MySQL 8.0 之不可见列的基本操作
2021/05/20 MySQL
OpenCV-Python实现轮廓的特征值
2021/06/09 Python
node.js如何自定义实现一个EventEmitter
2021/07/16 Javascript
Kubernetes部署实例并配置Deployment、网络映射、副本集
2022/04/01 Servers
Java Spring Lifecycle的使用
2022/05/06 Java/Android