2016-08-16 70 views
1

我對神經網絡很陌生,但對於我的項目他們似乎很適合。應用程序最終應該在Android手機上運行。我的想法是使用TenserFlow,但我不確定它是否合適。重複使用神經網絡

我有以下情況,我的輸入是一組圖像(它們的順序不應該對輸出有任何影響)。 Set大小不固定,但在大多數情況下低於10.我的整個集合的輸出只是一個二進制分類(Pass/Fail)。

我將有一個Convoluted神經網絡,它可以計算兩個輸出,一個權重和一個通過/失敗值。每個圖像單獨提供給CNN,然後使用加權算術平均值將結果值彙總爲最終的合格/不合格值。

我的問題是,我可以用TensorFlow訓練這樣一個網絡嗎?

我的訓練數據中沒有CNN輸出值,但只有聚合後的輸出值。這是可能的一般與一個面向梯度的框架或我必須使用遺傳算法aproach。

回答

0

你可以肯定地做到這一點張量流。在完成介紹教程後,您應該查看CNN tutorial以瞭解如何在張量流中實現卷積神經網絡。所有的繁重工作都已經完成。您所要做的就是使用tf.nn.conv2d()方法創建卷積層,然後使用其中一個池和規範化操作等。 如果您不熟悉這意味着什麼,那麼您應該使用read up,但簡而言之,CNN有三個獨特的組件。卷積層通過圖像掃描窗口,查找某些圖案,並將其激活作爲網格記錄在輸出中。學習降低數據的維度非常重要,這就是池化層的作用;它需要卷積層的輸出並減小其大小。規範化層比規範化這個因爲規範化的數據傾向於提高學習。

如果你只有聚合輸出,那麼你需要想出一個方法來爲每個圖像提供合理的代理輸出。你可以做的一件事就是使用匯總輸出作爲集合中每個單獨圖像的標籤,並使用梯度下降進行訓練。

+0

合理代理並不那麼容易。我懷疑只是使用標籤將會起作用,因爲一些圖像對於最終結果和一些勉強可以高度相關。我想我會閱讀一些關於遺傳算法的方法,用於envolfing網絡,這可能更適合我的問題 –

+0

我不確定算法的選擇是否是這裏的問題。問題是最終輸出應該是樣本中每個圖像輸出的平均值,但只有最終輸出。基於此,不可能知道哪個圖像對結果影響最大。但是,如果您有許多訓練集,則可以根據通過的示例中更頻繁的某些類型的圖像開始推斷,並且某些圖像不太頻繁。 –

+0

如果您將每個圖像的平均輸出分配爲標籤,那麼更重要的圖像將傾向於具有更高的標籤並且會被模型拾取。從貝葉斯的角度來看,這將是最自然的事情,因爲那是數據中的信息量。 –