2016-12-10 6 views
1

CIFAR-10データセットを使用してニューラルネットワークを訓練しています。0.10というスコアを得ています。これはまるでニューラルネットワークがちょうど推測しているようです正解)、CIFAR-10には10種類のもの(自動車、飛行機、猫、犬など)の32×32画像があります。私は何かが私のコードに間違っていると思う。ところで多層パーセプトロンニューラルネットワークは10%の精度を持っています

は、それが私を助けてください

をunpickle化ファイルの問題ではありません!

from sklearn import datasets 
from sklearn.neural_network import MLPClassifier 
import numpy as np 
import time 

labels = ["airplane", "automobile", "bird", "cat", "deer", "dog", "frog", "horse", "ship", "truck"] 

def unpickle(f): 
    import cPickle 
    fo = open(f, "rb") 
    dict = cPickle.load(fo) 
    fo.close() 
    return dict 

def setup_mlp(unpickled_data): 
    new_mlp = MLPClassifier(hidden_layer_sizes=3072, solver='sgd', batch_size=1000, max_iter=500, random_state=1, learning_rate_init=0.01) 
    return new_mlp 
#hidden_layer_sizes is the number of neurons in a layer. In this case I have one hidden layer & 3072 neurons in that layer 
if __name__ == "__main__": 
    unpickled_batch = unpickle("./data_batch_1") 
    print int(unpickled_batch["data"].shape[0]) 
    #time.sleep(1000) 
    X_train = unpickled_batch["data"][:1000] 
    Y_train = unpickled_batch["labels"][:1000] 
    print "Decoded batch, now training\n" 
    mlp = setup_mlp(unpickled_batch) 
    mlp.fit(X_train, Y_train) 
    print "Score=" + str(mlp.score(X_train, Y_train)) 

答えて

0

私は昨日同様の問題を抱えていたので、これはおそらくあなたに役立つかもしれません。あなたがデータをロードした後

from sklearn import preprocessing X_train = preprocessing.scale(X_train)

を追加したデータセット、すなわち を標準化する場合

MLPClassifierはCifar-10で正常に動作します。

しかし、あなたのテストセットはトレーニングセットと同じで、スコア= 1.0となり、新しい画像予測に関する情報がないので、これでは不十分です。

これを修正するには、cifar-10ファイルから 'test_batch'を読み込むか、unpickled_batch ["data"]とunpickled_batch ["labels"]を分割してiテストデータセットを作成します。

その後、テストセットのサイズに応じて、スコアは約0.3になるはずです。

関連する問題