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

作者:lsjweiyi 时间:2023-02-14 17:08:47 

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)

来源:https://blog.csdn.net/lsjweiyi/article/details/79821116

标签:TensorFlow,文件名,文件夹名,标签,队列
0
投稿

猜你喜欢

  • django使用LDAP验证的方法示例

    2022-11-22 12:54:47
  • 用 Python 制作地球仪的方法

    2022-11-10 19:10:36
  • javascript模拟鼠标自动点击链接

    2007-11-03 19:08:00
  • SQL Server 2008数据挖掘查询任务

    2009-03-16 16:50:00
  • SQL文本字段的数字排序问题

    2008-11-18 16:47:00
  • MYSQL数据库设计的一点总结

    2008-05-24 09:36:00
  • MAC下修改mysql默认字符集为utf8的方法

    2024-01-20 15:37:16
  • 菜鸟大讲堂:如何查看mysql版本的四种方法

    2009-09-05 09:54:00
  • python 中赋值,深拷贝,浅拷贝的区别

    2022-11-15 09:35:44
  • python基于opencv实现人脸识别

    2021-10-15 12:49:16
  • 提升你设计水平的CSS3新技术[译]

    2009-08-02 20:51:00
  • pandas read_excel()和to_excel()函数解析

    2022-11-26 06:25:19
  • go使用consul实现服务发现及配置共享实现详解

    2024-04-23 09:48:01
  • Django接收post前端返回的json格式数据代码实现

    2022-09-30 22:21:22
  • PyTorch中clone()、detach()及相关扩展详解

    2022-06-29 17:50:34
  • Python Queue模块详细介绍及实例

    2022-03-08 11:03:58
  • Django Auth用户认证组件实现代码

    2022-05-02 18:06:01
  • python-pyinstaller、打包后获取路径的实例

    2023-10-27 05:02:09
  • python 内置函数-range()+zip()+sorted()+map()+reduce()+filter()

    2022-09-23 19:48:01
  • python自动统计zabbix系统监控覆盖率的示例代码

    2023-11-14 08:23:03
  • asp之家 网络编程 m.aspxhome.com