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+matplotlib实现华丽的文本框演示代码
Jan 22 Python
浅谈Tensorflow模型的保存与恢复加载
Apr 26 Python
tensorflow实现简单的卷积神经网络
May 24 Python
pandas 读取各种格式文件的方法
Jun 22 Python
python实现爬取图书封面
Jul 05 Python
python实现两张图片的像素融合
Feb 23 Python
python中pip的使用和修改下载源的方法
Jul 08 Python
python的几种矩阵相乘的公式详解
Jul 10 Python
python 实现让字典的value 成为列表
Dec 16 Python
Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解
Mar 30 Python
python IP地址转整数
Nov 20 Python
python manim实现排序算法动画示例
Aug 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打开文件fopen函数的使用说明
2013/07/05 PHP
php使用GeoIP库实例
2014/06/27 PHP
php禁用函数设置及查看方法详解
2016/07/25 PHP
PHP入门教程之自定义函数用法详解(创建,调用,变量,参数,返回值等)
2016/09/11 PHP
PHP大神的十大优良习惯
2016/09/14 PHP
js自定义事件代码说明
2011/01/31 Javascript
NodeJS学习笔记之(Url,QueryString,Path)模块
2015/01/13 NodeJs
jQuery的bind()方法使用详解
2015/07/15 Javascript
JavaScript原型继承_动力节点Java学院整理
2017/06/30 Javascript
JavaScript 中Date对象的格式化代码方法汇总
2017/09/06 Javascript
angularJS的radio实现单项二选一的使用方法
2018/02/28 Javascript
jQuery实现浏览器之间跳转并传递参数功能【支持中文字符】
2018/03/28 jQuery
解决vue项目使用font-awesome,build后路径的问题
2018/09/01 Javascript
小程序调用微信支付的方法
2019/09/26 Javascript
Python采用socket模拟TCP通讯的实现方法
2014/11/19 Python
学习python类方法与对象方法
2016/03/15 Python
一个Python最简单的接口自动化框架
2018/01/02 Python
Python基于辗转相除法求解最大公约数的方法示例
2018/04/04 Python
Python判断一个三位数是否为水仙花数的示例
2018/11/13 Python
用python代码将tiff图片存储到jpg的方法
2018/12/04 Python
选择Python写网络爬虫的优势和理由
2019/07/07 Python
pytorch中的embedding词向量的使用方法
2019/08/18 Python
pandas DataFrame 数据选取,修改,切片的实现
2020/04/24 Python
Python实现异步IO的示例
2020/11/05 Python
Monnier Frères美国官网:法国知名奢侈品网站
2016/11/22 全球购物
Joie官方网上商店:购买服装和女装配饰
2018/06/05 全球购物
Oracle里面常用的数据字典有哪些
2014/02/14 面试题
高中体育教学反思
2014/01/24 职场文书
公司采购主管岗位职责
2014/06/17 职场文书
水利水电建筑施工应届生求职信
2014/07/04 职场文书
大学生个人学年总结
2015/02/15 职场文书
2019年大学生暑期社会实践调查报告模板
2019/11/07 职场文书
如何在向量化NumPy数组上进行移动窗口
2021/05/18 Python
pycharm代码删除恢复的方法
2021/06/26 Python
Python写情书? 10行代码展示如何把情书写在她的照片里
2022/04/21 Python
vscode远程免密登入Linux服务器的配置方法
2022/06/28 Servers