2016-07-06 106 views
0

我想了解什麼最好的方法是對經過訓練的TensorFlow神經網絡進行迴歸分析。經過訓練的TensorFlow神經網絡的最大值/最小值NN

具體來說,我正在尋找如何從訓練的神經網絡中找到更多的最大/最小值(相當於從迴歸曲線中找到最大/最小值)。簡單的方法是顯然「嘗試」所有可能的組合,並檢查結果集是否爲最大/最小值,但當具有多個輸入和因變量時,測試所有組合可以迅速成爲一個巨大的資源池。

有什麼辦法可以使用訓練好的TensorFlow神經網絡來進行這些進一步的分析嗎?

回答

2

隨着網絡的增量訓練,您可以逐步找到最大值。

假設您有一個輸入大小爲100(例如10x10圖像)和標量輸出爲1的神經網絡(例如給定任務的圖像分數)。
您可以從隨機噪聲開始逐步修改輸入,直到獲得輸出的局部最大值。所有你需要的是輸出的梯度相對於輸入:

input = tf.Variable(tf.truncated_normal([100], mean=127.5, stddev=127.5/2.)) 
output = model(input) 

grads = tf.gradients(output, input) 
learning_rate = 0.1 
update_op = input.assign_add(learning_rate * grads) 
+0

看起來非常有希望,我不知道人們可以很容易地獲得TF中的漸變。只是爲了我的理解:你基本上是建議在訓練過的網絡上運行另一個「漸變漸變」或「漸變漸變」(直到漸變= 0)? – Ruehri

+0

是的,但您隻手動更新輸入,因此網絡的所有權重都保持不變。由於參數少,因此收斂應該更容易。 –

1

ANNs不是可以通過分析檢查的東西。它有時候有數百萬個重量和數千個神經元,不同類型的非線性激活函數,卷積和最大彙集層。沒有辦法通過分析確定它的任何內容。實際上這就是爲什麼網絡增量式培訓。

+0

感謝您的幫助,但我不是問如果分析的方法將是可能的或沒有。我的問題更多的是關於替代的,潛在的基於算法的解決方案 – Ruehri

+0

明白了。那麼,我相信,你可以依靠奧利維爾的回答。 –