2016-08-26 13 views
0

形状(チャンネル数、高さ、幅)=(3、30、30)の画像データに畳み込みニューラルネットワーク(this one) )。私は76960トレーニングサンプル、19240テストサンプル、および39クラスがあります。ケラス畳み込みニューラルネットワークの妥当性確認の精度が変更されない

# Train the model using Stochastic grad descent + momentum 
sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True) 
cnn.compile(loss='categorical_crossentropy', 
      optimizer=sgd, 
      metrics=['accuracy']) 


batch_size = 128 
nb_epoch = 50 

cnn.fit(x_train, y_train, 
     batch_size = batch_size, 
     nb_epoch = nb_epoch, 
     validation_data=(x_test, y_test), 
     shuffle=True) 

トレーニング損失とエポック以上の精度の変化が、(0.3387から0.3357まで)第二エポックへ1日からの変更のみの検証精度、そしてそれは0.3357すべてのまま:コードの最後のいくつかのブロックがあります道。

さまざまなバッチサイズ(32,128または256)、learning rate(途中で10を掛けて1e-6から0.1まで)を試してみました。data normalizationの有無にかかわらず試しました(基本平均シフトと除算sdによって)。これらのどれも働いていません。

+0

別の分類子をテストしますか?はいの場合、異なる分類子に応じてどのような精度が得られますか? – Masoud

+0

クラスのバランスはどのようになっていますか?他のクラスより多くのサンプルを持っているクラス? –

+0

1.はい、私は他の分類子を試しました。 2.クラスのうち2つは、全人口の約34%と35%を占めています。 しかし、私の質問は実際には「方法Xにデータを正確に分類する方法」ではないことに注意してください。私は与えられたラベルが正しいと確信していないので、分類することの失敗は現実を反映した正確な結果である可能性があります。技術的なエラーが心配です。 – AndreyIto

答えて

0

あなたが抱いている正確さのパーセント(33.5%)は、支配的なクラスに入る例の割合と同じです(あなたは「約34%」と言っています - ほぼ確実に33.5% )。

問題はあなたの画像データを正規化していないということです。ピクセル値が1〜255の場合、モデルはいつも同じクラスを予測することになります。これが起こっていることを確認するには、model.predict(x_train)を使用して、あなたのモデルが予測しているものを見てください。私はそれが正確に統一されていると、それは常にあなたのデータの34%を占めるクラスだと思います。

この問題を解決するには、データを正規化するだけです。x_trainを255で除算してからモデルをトレーニングしてください。

x_train = x_train/255.0 
関連する問題