MxNet神经网络不会学习

问题描述 投票:0回答:1

我在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)
python deep-learning mxnet
1个回答
1
投票

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

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

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

有关https://mxnet.incubator.apache.org/api/python/optimization.html的更多讨论,请参见此处

© www.soinside.com 2019 - 2024. All rights reserved.