まず... これは ConvNetJs の問題ではなく、ニューラル ネットワークの理解の問題だと思います。
与えられた 2 つの乱数を加算した結果が偶数かどうかを検出します。
例:
[4,6] = 真
[3,4] = 偽
私のセットアップ:
var layer_defs = [];
layer_defs.push({type:'input', out_sx:1, out_sy:1, out_depth:2});
layer_defs.push({type:'fc', num_neurons:20, activation:'relu'});
layer_defs.push({type:'softmax', num_classes:2});
net = new convnetjs.Net();
net.makeLayers(layer_defs);
var trainer = new convnetjs.Trainer(net, {method: 'adadelta', l2_decay: 0.001,batch_size: 10}
次に、10,000回の反復で(乱数を使用して)トレーニングしました。近づくことはありません。せいぜい約 56% の精度です。
同じセットアップを使用しても問題は異なります。
最初の数値が 2 番目の数値よりも大きい。1,000 回未満の反復で 99% の精度を達成します。
私が試したこと: より多くのレイヤー より多くのニューロン svm vs softmax
これが「分類できない」問題なのかどうか疑問に思っています。