簡體   English   中英

卷積神經網絡訓練

[英]Convolutional Neural Network Training

我有一個關於卷積神經網絡( CNN )培訓的問題。

我設法使用張量tensorflow訓練網絡,該張量流將輸入圖像(1600像素)並輸出與其匹配的三個類別之一。

用訓練有素的課程的變化來測試網絡會產生良好的結果。 然而; 當我給它不同的第四張圖像(不包含任何經過訓練的3張圖像)時,它總是向其中一個類返回隨機匹配。

我的問題是,如何訓練網絡以將圖像分類為不屬於三個訓練圖像中的任何一個? 一個類似的例子,如果我針對mnist數據庫訓練了一個網絡,然后給了它一個字符“ A”或“ B”。 有沒有一種方法可以區分輸入不屬於任何一個類?

謝謝

您的模型將始終像標簽一樣進行預測,因此,例如,如果使用MNIST數據訓練模型,則在進行預測時,就像MNIST標簽一樣,預測將始終為0-9。

您可以做的是首先使用2個類別訓練不同的模型,其中您將預測圖像是否屬於MNIST數據的數據集A或BEx,將所有數據標記為1並添加來自其他來源(不是0- 9)並將其標記為0。然后訓練模型以查找圖像是否屬於MNIST。

卷積神經網絡(CNN)在訓練后根據定義的類預測結果。 不管准確性如何,CNN總是從其中一個類別返回。 我也遇到過類似的問題,您可以做的是檢查准確性值。 如果精度低於某個閾值,則它不屬於任何類別。 希望這可以幫助。

您可能有三個輸出節點,然后選擇最大值(單熱編碼)。 這有點不幸,因為它的輸出數量很少。 無法識別的輸入往往會導致相當隨機的輸出。

現在,有了3個輸出,粗略地說您可以獲得7個結果。 您可能會得到一個高值(3種可能性),但是無法識別的輸入也會導致2種​​高輸出(也有3種可能性)或近似相等的輸出(也有3種可能性)。 因此,隨機輸入很有可能(〜3/7)在輸出節點上產生模式,您只希望獲得可識別的輸入。

現在,如果您有15個類,因此有15個輸出節點,那么您將查看未識別的輸入的大約32767個可能的結果,其中只有15個對應於預期的一次性結果。

根本原因是缺乏培訓數據。 如果您的訓練集中有3個班級以外的示例,則可以將其轉儲到第4個“其他”類別中並進行訓練。 這本身並不是一個可靠的指示,因為通常理論上的“其他”集合很大,但是您現在有兩種互補的方式來檢測其他輸入:通過“其他”輸出節點或11個歧義輸出之一。

另一個解決方案是檢查您的CNN通常在得到其他結果時會產生什么結果。 我相信最后一層必須是softmax,而您的CNN應該返回三個給定類的概率。 如果這些概率中的任何一個都不接近1,則這可能意味着如果您的CNN受過良好的訓練,這可能是另一回事(預測錯誤的標簽時,必須對它的過度自信加以罰款)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM