TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现

 更新时间:2020年02月17日 08:36:25   作者:lsjweiyi  
今天小编就为大家分享一篇TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

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针对给定列表中元素进行翻转操作的方法分析

    这篇文章主要介绍了Python针对给定列表中元素进行翻转操作的方法,结合实例形式分析了Python针对列表元素基于切片及遍历输出两种翻转操作实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2018-04-04
  • 基于pycharm实现批量修改变量名

    基于pycharm实现批量修改变量名

    这篇文章主要介绍了基于pycharm实现批量修改变量名,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • Java基础技术之反射详解

    Java基础技术之反射详解

    这篇文章主要介绍了Java基础技术之反射详解,反射就是把Java类中的各个部分,映射成一个个的Java对象,拿到这些对象后可以做一些事情,需要的朋友可以参考下
    2023-07-07
  • python 最简单的实现适配器设计模式的示例

    python 最简单的实现适配器设计模式的示例

    这篇文章主要介绍了python 最简单的实现适配器设计模式的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • Python松散正则表达式用法分析

    Python松散正则表达式用法分析

    这篇文章主要介绍了Python松散正则表达式用法,较为详细的分析了松散正则表达式的概念、功能与相关使用技巧,需要的朋友可以参考下
    2016-04-04
  • Python 将json序列化后的字符串转换成字典(推荐)

    Python 将json序列化后的字符串转换成字典(推荐)

    这篇文章主要介绍了Python 将json序列化后的字符串转换成字典,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • 解决keras backend 越跑越慢问题

    解决keras backend 越跑越慢问题

    这篇文章主要介绍了解决keras backend 越跑越慢问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • 浅谈一下四则运算和二叉树

    浅谈一下四则运算和二叉树

    这篇文章主要浅谈一下四则运算和二叉树,因为总是见到把 四则运算表达式 用 树 的形式来展示,所以就想着给定一颗表达式树,计算它的结果出来,需要的朋友可以参考下
    2023-04-04
  • Python绘制可以表示点密度的散点图得方法

    Python绘制可以表示点密度的散点图得方法

    本文介绍基于Python语言的matplotlib模块,对Excel表格文件中的指定数据,加以密度散点图绘制的方法,文中有相关的代码示例供大家参考,需要的朋友可以参考下
    2024-05-05
  • python代码实现备忘录案例讲解

    python代码实现备忘录案例讲解

    这篇文章主要介绍了python代码实现备忘录案例讲解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07

最新评论