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 相关文章推荐
Python3实现的腾讯微博自动发帖小工具
Nov 11 Python
Python模拟登陆实现代码
Jun 14 Python
Python利用turtle库绘制彩虹代码示例
Dec 20 Python
Python二叉树定义与遍历方法实例分析
May 25 Python
程序员写Python时的5个坏习惯,你有几条?
Nov 26 Python
pandas把所有大于0的数设置为1的方法
Jan 26 Python
Python实现的服务器示例小结【单进程、多进程、多线程、非阻塞式】
May 23 Python
Pytorch .pth权重文件的使用解析
Feb 14 Python
pytorch进行上采样的种类实例
Feb 18 Python
python中判断文件结束符的具体方法
Aug 04 Python
python 写一个性能测试工具(一)
Oct 24 Python
使用Python画了一棵圣诞树的实例代码
Nov 27 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操作XML作为数据库的类
2010/12/19 PHP
PHP通过正则表达式下载图片到本地的实现代码
2011/09/19 PHP
php数字游戏 计算24算法
2012/06/10 PHP
PHP JWT初识及其简单示例
2018/10/10 PHP
laravel-admin的图片删除实例
2019/09/30 PHP
用javascript实现读取txt文档的脚本
2007/07/20 Javascript
JQuery Tips(3) 关于$()包装集内元素的改变
2009/12/14 Javascript
Jquery 绑定时间实现代码
2011/05/03 Javascript
原生js实现查找/添加/删除/指定元素的class
2013/04/12 Javascript
JavaScript中通过prototype属性共享属性和方法的技巧实例
2015/03/13 Javascript
JS实现同一个网页布局滑动门和TAB选项卡实例
2015/09/23 Javascript
Bootstrap 组件之按钮(二)
2016/05/11 Javascript
基于Bootstrap实现tab标签切换效果
2020/04/15 Javascript
jQuery+css实现非常漂亮的水平导航菜单效果
2016/07/27 Javascript
ES6概念 Symbol toString()方法
2016/12/25 Javascript
JavaScript选取(picking)和反选(rejecting)对象的属性方法
2017/08/16 Javascript
10个经典的网页鼠标特效代码
2018/01/09 Javascript
Vue2.0中三种常用传值方式(父传子、子传父、非父子组件传值)
2018/08/16 Javascript
Javascript删除数组里的某个元素
2019/02/28 Javascript
微信小程序页面间传值与页面取值操作实例分析
2019/04/30 Javascript
js实现翻牌小游戏
2020/07/31 Javascript
JavaScript实现跟随鼠标移动的盒子
2021/01/28 Javascript
Pycharm和Idea支持的vim插件的方法
2020/02/21 Python
python ffmpeg任意提取视频帧的方法
2020/02/21 Python
python实现udp传输图片功能
2020/03/20 Python
Python如何使用PIL Image制作GIF图片
2020/05/16 Python
Python控制台实现交互式环境执行
2020/06/09 Python
python录音并调用百度语音识别接口的示例
2020/12/01 Python
手对手的教你用canvas画一个简单的海报的方法示例
2018/12/10 HTML / CSS
计算机开发个人求职信范文
2013/09/26 职场文书
幼儿园教师国培感言
2014/02/02 职场文书
调解协议书
2014/04/16 职场文书
化验员岗位职责
2015/02/14 职场文书
春节晚会开场白
2015/05/29 职场文书
幼儿园庆元旦主持词
2015/07/06 职场文书
社区服务理念口号
2015/12/25 职场文书