2017-12-15 20 views
0

MxNetでMLPを学習するのに問題があります。それはかなり一定の値を出力する傾向があり、ときどき異なる何かを出力するだけです。私はPima Indiansのデータセットを使用してバイナリ分類を行っていますが、私が何をしていても(正規化、スケーリング、活性化、目的関数、ニューロン数、バッチサイズ、エポック数の変化)MxNetニューラルネットは学習しません

Kerasの同じMLPが正常に動作します。

ここMxNetのコードは次のとおりです。

batch_size=10 
train_iter=mx.io.NDArrayIter(mx.nd.array(df_train), mx.nd.array(y_train), 
batch_size, shuffle=True) 
val_iter=mx.io.NDArrayIter(mx.nd.array(df_test), mx.nd.array(y_test), batch_size) 

data=mx.sym.var('data') 

fc1 = mx.sym.FullyConnected(data=data, num_hidden=12) 
act1 = mx.sym.Activation(data=fc1, act_type='relu') 

fc2 = mx.sym.FullyConnected(data=act1, num_hidden=8) 
act2 = mx.sym.Activation(data=fc2, act_type='relu') 

fcfinal = mx.sym.FullyConnected(data=act2, num_hidden=2) 
mlp = mx.sym.SoftmaxOutput(data=fcfinal, name='softmax') 

mlp_model = mx.mod.Module(symbol=mlp, context=mx.cpu()) 
mlp_model.fit(train_iter, 
      eval_data=val_iter, 
      optimizer='sgd', 
      eval_metric='ce', 
      num_epoch=150) 

そしてKerasで同じMLP:

model = Sequential() 
model.add(Dense(12, input_dim=8, activation='relu')) 
model.add(Dense(8, activation='relu')) 
model.add(Dense(1, activation='sigmoid')) 

model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) 
model.fit(df_train_res, y_train_res) 

答えて

1

私はあなたがトレーニングを開始する前に、あなたのパラメータを初期化することをお勧めします。すべてのパラメータをゼロから始めることは理想的ではありません。

あなたが

initializer=mx.init.Xavier(rnd_type='gaussian') 

より多くの議論についてはこちらを参照してくださいあなたのmodel.fit()にパラメータとして以下を追加することができ https://mxnet.incubator.apache.org/api/python/optimization.html

関連する問題