Neural network 具有pybrain的极低精度神经网络

Neural network 具有pybrain的极低精度神经网络,neural-network,pybrain,Neural Network,Pybrain,我刚开始用python学习机器学习,我正在用pybrain构建一个神经网络来训练数字识别问题。我最终得到了程序的工作,但是无论是在训练集还是测试集上,准确率都非常低~30%。我想一定是出了什么问题,但我找不到问题所在。我被困在这里好几天了。有人能帮我吗?非常感谢 每个训练数据:输入为28*28灰度,重塑为1*784,输出为1*10数组,0或1,位置1表示数字,例如 [0,0,0,0,0,0,0,0,1,0,0]表示数字为7 代码如下: from pybrain.datasets.supervis

我刚开始用python学习机器学习,我正在用pybrain构建一个神经网络来训练数字识别问题。我最终得到了程序的工作,但是无论是在训练集还是测试集上,准确率都非常低~30%。我想一定是出了什么问题,但我找不到问题所在。我被困在这里好几天了。有人能帮我吗?非常感谢

每个训练数据:输入为28*28灰度,重塑为1*784,输出为1*10数组,0或1,位置1表示数字,例如 [0,0,0,0,0,0,0,0,1,0,0]表示数字为7

代码如下:

from pybrain.datasets.supervised import SupervisedDataSet as SDS
from pybrain.tools.shortcuts import buildNetwork
from pybrain.supervised.trainers import BackpropTrainer
from sklearn.metrics import accuracy_score

#build datasets
size_sample = 500
#randomly choose 500 training data    
(sample_X,sample_y) = randomSample(training_X, training_y, size_sample)
ds = SDS(28*28,10)
ds.setField( 'input', sample_X )
#sample_y = sample_y.reshape(size_sample,10)
ds.setField( 'target', sample_y )
#build network
Num_Hidden_Layers = 10
net = buildNetwork(ds.indim,Num_Hidden_Layers,ds.outdim,bias=True,outclass=SoftmaxLayer)
#train data
trainer = BackpropTrainer(net,ds)

# predict using test data
print "Making predictions..."
predict_y = []
for i in range(test_X.shape[0]):
    pred = net.activate(test_X[i, :])
    print pred
    print pred.argmax()
    predict_y = np.append(predict_y, pred.argmax())

这是因为你实际上没有使用10个隐藏层,你只使用了10个隐藏单位。请尝试以下方法:

    buildNetwork(ds.indim,25, 50, 25,ds.outdim,bias=True,outclass=SoftmaxLayer) 

如果这能提供更好的输出精度,那么你就知道你在正确的轨道上,在这一点上你只需要使用参数

尝试使用弹性反向传播训练器Rprop。这将更好地训练你的人际网络