首先,您不必使用.mat
文件或泡菜。 Tensorflow期望numpy array
。
例如,假設您有70000張尺寸爲28x28(= 784尺寸)的圖像屬於10個類別。我們還假設你想訓練一個簡單的前饋神經網絡來分類圖像。
第一步將分割圖像之間的訓練和測試(和驗證,但讓我們把它放在一邊,爲簡單起見)。爲了舉例,讓我們假設您爲您的訓練集選擇了隨機 60000圖像,並且爲您的測試集選擇了10000。
第二步將確保您的數據具有正確的格式。在這裏,你希望你的訓練集包含一個形狀爲(60000, 784)
的形狀的陣列,另一個形狀爲(60000, 10)
(如果你使用單熱編碼來表示你的類)。至於你的測試集,你應該有一個形狀(10000, 784)
的圖像陣列和形狀(10000, 10)
的標籤之一。
一旦你有了這些大的numpy數組,你應該定義placeholders
,這將允許你在訓練和評估期間向你的網絡提供數據。
images = tf.placeholder(tf.float32, shape=[None, 784])
labels = tf.placeholder(tf.int64, shape=[None, 10])
這裏的None
意味着可以喂批處理任何尺寸的,即作爲許多圖像,你想要的,只要你numpy的陣列形狀(anything, 784)
的。
第三步包括定義您的模型以及損失函數和優化器。
第四步包括訓練您的網絡,使用上面創建的佔位符隨機批處理數據。隨着您的網絡正在接受培訓,您可以定期打印其性能,如訓練損失/準確度以及測試損失/準確性。
你可以找到一個完整的,非常簡單的例子here。
感謝您的回答@BiBi。你的回答非常明確,但我不明白一件事。我如何標記訓練圖像?一個接一個還是其他方式?你有什麼簡單的例子/解釋標籤? –
獲取標籤是最枯燥的任務之一。在MNIST示例中,標籤是手動獲取的,現在可供任何人免費下載。如果您使用公開可用的數據集,則最有可能具有標籤。但是,如果您創建自己的數據集(例如您自己的圖像),則需要手動獲取標籤(假設您想進行監督式學習)。 – BiBi