MxNet神经网络不会学习

时间:2017-12-15 23:20:14

标签: python deep-learning mxnet

我在MxNet中制作MLP时遇到问题。它倾向于输出相当恒定的值,只偶尔输出任何不同的值。我使用Pima Indians数据集进行二元分类,但无论我做什么(标准化,缩放,改变激活,目标函数,神经元数量,批量大小,时期),它都不会产生任何有用的东西。

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 个答案:

答案 0 :(得分:1)

我建议您在开始训练之前初始化参数。将所有参数从零开始并不理想。

您可以将以下参数添加到model.fit()

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

请参阅此处以获取更多讨论 https://mxnet.incubator.apache.org/api/python/optimization.html