TensorFlow通過文件名/文件夾名獲取標簽,并加入隊列的實現(xiàn)
TensorFlow官網(wǎng)給的cifar-10教程,是卷積神經(jīng)網(wǎng)絡(luò)入門的好例子,有時想直接拿這個模型來跑自己的數(shù)據(jù),卻發(fā)現(xiàn)他的數(shù)據(jù)類型不是常見的,我們一般獲取的數(shù)據(jù)(圖片)以文件夾分類存好,或者直接在文件名上注明了類別,這時就要通過文件名的來獲取標簽,顯然直接用cifar-10的方式是不行的。
這里當然可以吧數(shù)據(jù)轉(zhuǎn)化成cifar-10那種類型,不過個人不喜歡這種方式吧。
另一種就還是老辦法,對文件名進行處理,獲取標簽。
其實處理文件名,對python來說,很簡單。只是剛接觸卷積神經(jīng)網(wǎng)絡(luò)的,可能并不熟悉TensorFlow的用法(本人),怎么修改代碼才能以這種方式讀取數(shù)據(jù)進隊列呢?
看代碼:
import tensorflow as tf import os #這就是數(shù)據(jù)所在的路徑,其子目錄是若干個文件夾,分別對應(yīng)一類數(shù)據(jù), #文件夾下存放的就是對應(yīng)那一類的數(shù)據(jù)。 #命名方式:1,2,3,4····(代表不同的類別,簡單粗暴) path="./data" classes=2#數(shù)據(jù)類別的數(shù)量 imagesList=[]#存放圖片數(shù)據(jù)的列表(這里存放的僅僅是圖片所在的路徑,并不是圖片) labelsList=[]#存放標簽,與上面圖片是一一對應(yīng)的 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)#轉(zhuǎn)化成tf的數(shù)據(jù)類型 label = tf.cast(labelsList,tf.int64) queue = tf.train.slice_input_producer([image,label])#生成隊列,這里也就關(guān)鍵的地方 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]) #這個函數(shù)是重塑行,具體干嘛不清楚,不用有時報錯 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() #創(chuàng)建一個協(xié)調(diào)器,管理線程 threads = tf.train.start_queue_runners(coord=coord) #啟動QueueRunner, 此時文件名隊列已經(jīng)進隊。 for i in range(6): e_val,l_val = sess.run([example_batch, label_batch]) print (e_val,l_val)#弄些簡單的數(shù)據(jù)來測試效果。 coord.request_stop() coord.join(threads)
以上這篇TensorFlow通過文件名/文件夾名獲取標簽,并加入隊列的實現(xiàn)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python針對給定列表中元素進行翻轉(zhuǎn)操作的方法分析
這篇文章主要介紹了Python針對給定列表中元素進行翻轉(zhuǎn)操作的方法,結(jié)合實例形式分析了Python針對列表元素基于切片及遍歷輸出兩種翻轉(zhuǎn)操作實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2018-04-04
python 最簡單的實現(xiàn)適配器設(shè)計模式的示例
這篇文章主要介紹了python 最簡單的實現(xiàn)適配器設(shè)計模式的示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-06-06
Python 將json序列化后的字符串轉(zhuǎn)換成字典(推薦)
這篇文章主要介紹了Python 將json序列化后的字符串轉(zhuǎn)換成字典,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-01-01

