制作自己的訓練集
下圖是我們數據的存放格式,在data目錄下有驗證集與測試集分別對應iris_test, iris_train
為了向偉大的MNIST致敬,我們采用的數據名稱格式和MNIST類似
classification_index.jpg
圖像的index都是5的整數倍是因為我們選擇測試集的原則是每5個樣本,選擇一個樣本作為測試集,其余的作為訓練集和驗證集
生成這樣數據的過程相對簡單,如果有需要python代碼的,可以給我發郵件,或者在我的github下載
至此,我們的訓練集,測試集,驗證集就生成成功了,之所以我們的文件夾只有訓練集和測試集是因為我們在后續的訓練過程中,會在訓練集中分出一部分作為驗證集,所以兩者暫時合稱為訓練集
將數據集寫入到Tensorflow中
1. 直接寫入到隊列中
import tensorflow as tfimport numpy as npimport ostrain_dir = '/home/ruyiwei/data/iris_train/'#your data directorydef get_files(file_dir): ''' Args: file_dir: file directory Returns: list of images and labels ''' iris = [] label_iris = [] contact = [] label_contact = [] for file in os.listdir(file_dir): name = file.split('_') if name[0]=="iris": iris.append(file_dir + file) label_iris.append(0) else: contact.append(file_dir + file) label_contact.append(1) print('There are %d iris/nThere are %d contact' %(len(iris), len(contact))) image_list = np.hstack((iris, contact)) label_list = np.hstack((label_iris, label_contact)) temp = np.array([image_list, label_list]) temp = temp.transpose() np.random.shuffle(temp) image_list = list(temp[:, 0]) label_list = list(temp[:, 1]) label_list = [int(i) for i in label_list] return image_list, label_list
為了大家更方便的理解和修改代碼,我們對代碼進行講解如下
1-3行 : 導入需要的模塊
5行: 定義訓練集合的位置,這個需要根據自己的機器進行修改
7行: 定義函數 get_files
18行: os.listdir(file_dir) 獲取指定目錄file_dir下的所有文件名詞,也就是我們的訓練圖片名稱
18行:for file in os.listdir(file_dir): 遍歷所有的圖片
19行: name為一個數組,由于我們根據MINIST來定制的圖片名詞,所以file.split(‘_')會將圖像名稱分為兩部分,第一部分為classification,通過name[0]來獲得分類信息。
21行、24行:iris.append(file_dir + file)/contact.append(file_dir + file)將圖像的絕對路徑放入到iris/contact中
22行、25行:label_iris.append(0)/label_contact.append(1)給對應的圖片貼標簽
新聞熱點
疑難解答