2016-04-18 17 views
0

PyBrainでmnistのデータを分類しようとしています。以下はPyBrain mnistの分類

は、訓練のためのコードです:

def train_net(self): 

    print("Build network") 
    net = buildNetwork(784, 30, 10, bias=True, hiddenclass=TanhLayer, outclass=SoftmaxLayer) 
    back_trainer = BackpropTrainer(net, learningrate=1) 

    training_dataset = self.get_training_dataset() 

    print("Begin training") 
    time0 = time() 
    err = back_trainer.trainUntilConvergence(dataset=training_dataset, maxEpochs=300, verbose=True) 
    print("Training time is " + str(round(time()-time0, 3)) + " seconds.") 

    return net, err 

def get_training_dataset(self): 
    print("Reading training images") 
    features_train = self.read_images("train-images.idx3-ubyte") 

    print("Reading training labels") 
    labels_train = self.read_labels("train-labels.idx1-ubyte") 

    # view_image(features_train[10]) 
    print("Begin reshaping training features") 
    features_train = self.reshape_features(features_train) 

    print("Create training dataset") 
    training_dataset = ClassificationDataSet(784, 10) 

    for i in range(len(features_train)): 
     result = [0]*10 
     result[labels_train[i]] = 1 
     training_dataset.addSample(features_train[i], result) 

    training_dataset._convertToOneOfMany() 

    return training_dataset 

をそして、私はテストデータセットにネットワークを有効にすると、結果は次のようになります。ARGMAX値はクラスを示し

[ 3.72885642e-25 4.62573440e-64 2.32150541e-31 9.42499004e-16 
    1.33256639e-39 2.30439387e-17 5.16602624e-94 1.00000000e+00 
    1.83860601e-27 1.22969684e-22] 

。指定されたリストのargmaxは7です。

なぜですか?私がデータセットを準備するとき、result[labels_train[i]] = 1を見ることができます。そこでは、対応するニューロンが私に1を与える必要があり、他はゼロでなければなりません。だから私は[0, 0, 0, 0, 0, 0, 0, 1, 0, 0]を期待した。

私は、_convertToOneOfMany関数がそのような出力を行うことができることを読んだことがあります。だから私はそれを加えたが、何も変わっていない。私は間違っている?間違って何もありません

+0

既にMNISTデータセットのデコード済みバージョンがあります:http://mnist-decoded.000webhostapp.com/ – SomethingSomething

答えて

1

出力は(正しい答えを「十分に」近い場合、あなたが幸せになる必要がありますので、あなたはほとんどは、あなたはさまざまな理由によるもののために訓練正確な結果を取り戻すことはありませんこれは、あなたが投稿した例です)。

+0

申し訳ありませんが、私はそれを取得します。あなたは正しかった。 –