0
我在某處讀到平均誤差損失對迴歸有好處,並且交叉熵損失用於分類。神經網絡和XOR作爲分類
當我試圖訓練XOR作爲交叉熵損失的分類問題時,網絡未能收斂。
我的設定:
網絡是2-2-2
第一輸出信號0和第二1(所以兩個類的輸入)。
交叉熵用於計算網絡輸出層的誤差而不是均方誤差。
作爲激活函數,我使用的是logsig。
顯然,我錯過了什麼,我的錯誤在哪裏?
我在某處讀到平均誤差損失對迴歸有好處,並且交叉熵損失用於分類。神經網絡和XOR作爲分類
當我試圖訓練XOR作爲交叉熵損失的分類問題時,網絡未能收斂。
我的設定:
網絡是2-2-2
第一輸出信號0和第二1(所以兩個類的輸入)。
交叉熵用於計算網絡輸出層的誤差而不是均方誤差。
作爲激活函數,我使用的是logsig。
顯然,我錯過了什麼,我的錯誤在哪裏?
下面是這個網絡的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"]
後幾千回合會聚。所以,我不認爲你錯過任何東西 - 也許有你的庫
請提供代碼中的bug。 –
很抱歉,我不能,爲了教育目的我寫了自己的lib,所以即使我發佈代碼,沒有lib也沒有意義。事情是,你知道我思想中的缺陷嗎?例如,在訓練經典XOR時,必須使用tansig激活,否則將無法收斂。你知道,我正在尋找這樣的問題,所以我相信,缺少代碼不是問題。 – Seraph
這是一個編程網站,如果你沒有代碼,那麼問題就是主題。 –