2017-09-03 90 views
0

我在某處讀到平均誤差損失對迴歸有好處,並且交叉熵損失用於分類。神經網絡和XOR作爲分類

當我試圖訓練XOR作爲交叉熵損失的分類問題時,網絡未能收斂。

我的設定:

  • 網絡是2-2-2

  • 第一輸出信號0和第二1(所以兩個類的輸入)。

  • 交叉熵用於計算網絡輸出層的誤差而不是均方誤差。

  • 作爲激活函數,我使用的是logsig。

顯然,我錯過了什麼,我的錯誤在哪裏?

+1

請提供代碼中的bug。 –

+0

很抱歉,我不能,爲了教育目的我寫了自己的lib,所以即使我發佈代碼,沒有lib也沒有意義。事情是,你知道我思想中的缺陷嗎?例如,在訓練經典XOR時,必須使用tansig激活,否則將無法收斂。你知道,我正在尋找這樣的問題,所以我相信,缺少代碼不是問題。 – Seraph

+1

這是一個編程網站,如果你沒有代碼,那麼問題就是主題。 –

回答

1

下面是這個網絡的Mathematica中的實現:

net = NetChain[{2, Tanh, 2, Tanh, 1, LogisticSigmoid}, "Input" -> {2}]; 

eps = 0.01; 
data = {{0, 0} -> {eps}, {1, 0} -> {1 - eps}, {0, 1} -> {1 - eps}, {1, 
     1} -> {eps}}; 

trained = 
NetTrain[net, data, CrossEntropyLossLayer["Binary"], 
    MaxTrainingRounds -> Quantity[5, "Minutes"], TargetDevice -> "GPU"] 

後幾千回合會聚。所以,我不認爲你錯過任何東西 - 也許有你的庫

enter image description here