我有一個有效的反向傳播演算法,當在相同的奇異輸入上迭代 100,000 次時,它可以正確地最小化錯誤,例如 [1, 0] -> 1。
但是當有多個輸入時,我不確定如何擴展它來訓練神經網路。
假設我們希望訓練 XOR 函式,具有四種可能的輸入和輸出狀態:
[ 0, 0 ] -> 0
[ 0, 1 ] -> 1
[ 1, 0 ] -> 1
[ 1, 1 ] -> 0
我嘗試在每個輸入輸出測驗資料之后呼叫反向傳播演算法。即使經過大量迭代,網路也根本不會以這種方式學習。
在呼叫反向傳播之前,我是否應該計算整個訓練集(即上述 4 種情況)的累積誤差?
在這個例子中,累積的誤差是如何存盤和用于整個訓練集的?
謝謝你。
uj5u.com熱心網友回復:
每個示例后的更新和累積版本都是正確的。他們只是實作了兩種略有不同的演算法,更新每一步將使其成為 SGD(隨機梯度下降),而另一個 GD(梯度下降)。你也可以在兩者之間做一些事情,在那里你更新每一批資料。您描述的問題(缺乏學習)與更新發生時無關。
請注意,“正確學習”一個樣本并不意味著您擁有無錯誤的演算法!如果您只有一個樣本,那么您只調整最后一層的偏差的網路應該能夠這樣做,但會失敗。這只是可以打破但通過“單樣本測驗”的一個例子。
uj5u.com熱心網友回復:
如果您的模型是單層網路,它將無法學習 XOR 函式,因為它是線性不可分的。如果它有多個層,您應該累積所有錯誤并按所有樣本的總數(在您的情況下為 4)對它們進行歸一化。最后,你的問題的主要原因可能是由于高學習率導致引數變化太大。嘗試降低學習率并增加迭代次數。請參閱 https://medium.com/analytics-vidhya/understanding-basics-of-deep-learning-by-solving-xor-problem-cb3ff6a18a06 以供參考。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/337532.html
上一篇:我收到此錯誤:'AttributeError:module'keras.optimizers'hasnoattribute'Adam''
下一篇:Tensorflow綠移影像
