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