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爬虫实现(伪)球迷速成
Jun 10 Python
Python实现的朴素贝叶斯算法经典示例【测试可用】
Jun 13 Python
python实现下载pop3邮件保存到本地
Jun 19 Python
python requests 测试代理ip是否生效
Jul 25 Python
pytorch训练imagenet分类的方法
Jul 27 Python
python+ffmpeg批量去视频开头的方法
Jan 09 Python
python获取全国城市pm2.5、臭氧等空气质量过程解析
Oct 12 Python
python绘制无向图度分布曲线示例
Nov 22 Python
python GUI库图形界面开发之PyQt5树形结构控件QTreeWidget详细使用方法与实例
Mar 02 Python
Python random模块的使用示例
Oct 10 Python
python 如何设置守护进程
Oct 29 Python
深度学习小工程练习之垃圾分类详解
Apr 14 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&&mysql)五
2006/10/09 PHP
PHP学习之数组值的操作
2011/04/17 PHP
通过dbi使用perl连接mysql数据库的方法
2014/04/16 PHP
php实现的通用图片处理类
2015/03/24 PHP
Laravel 5.5 实现禁用用户注册示例
2019/10/24 PHP
关于B/S判断浏览器断开的问题讨论
2008/10/29 Javascript
Knockout text绑定DOM的使用方法
2013/11/15 Javascript
js 数值转换为3位逗号分隔的示例代码
2014/02/19 Javascript
jquery 取子节点及当前节点属性值的方法
2014/08/24 Javascript
JavaScript检测并限制复选框选中个数的方法
2015/08/12 Javascript
Angularjs注入拦截器实现Loading效果
2015/12/28 Javascript
分享网页检测摇一摇实例代码
2016/01/14 Javascript
three.js 入门案例详解
2018/01/23 Javascript
详解Vue源码中一些util函数
2019/04/24 Javascript
vue组件开发之slider组件使用详解
2020/08/21 Javascript
Python-嵌套列表list的全面解析
2016/06/08 Python
详解python3中socket套接字的编码问题解决
2017/07/01 Python
Python调用微信公众平台接口操作示例
2017/07/08 Python
浅谈django开发者模式中的autoreload是如何实现的
2017/08/18 Python
Django 实现下载文件功能的示例
2018/03/06 Python
基于sklearn实现Bagging算法(python)
2019/07/11 Python
对Django中内置的User模型实例详解
2019/08/16 Python
Pymysql实现往表中插入数据过程解析
2020/06/02 Python
基于Python正确读取资源文件
2020/09/14 Python
Book Depository澳大利亚:世界领先的专业在线书店之一
2018/12/27 全球购物
大学系主任推荐信范文
2013/12/24 职场文书
《陶罐和铁罐》教学反思
2014/02/19 职场文书
婚礼主持词
2014/03/13 职场文书
医学专业大学生职业生涯规划书
2014/10/25 职场文书
领导欢迎词范文
2015/01/26 职场文书
2015秋季开学典礼新闻稿
2015/07/17 职场文书
初一军训感言
2015/08/01 职场文书
子女赡养老人协议书
2016/03/23 职场文书
导游词之阳朔遇龙河
2019/12/16 职场文书
Python opencv缺陷检测的实现及问题解决
2021/04/24 Python
Python中的xlrd模块使用整理
2021/06/15 Python