0

Tensorflowで従来のMNISTタスクを畳み込みNNで解決しようとしています。 私の入力はKaggleからのデータです:https://www.kaggle.com/c/digit-recognizer/dataTensorflow:トレーニングバッチ内のすべてのアイテムが同じ予測ラベルを持っています

私は機械学習の慣れないので、私のコードは基本的にさまざまなソースからのコピーペーストと自分のハッキングを組み合わせたものです。

現在、私のコードは以下の通りです:

:現在の代わりに精度のI出力のみ予測ラベル(モデル出力のソフトマックスのARGMAX)

そして、ここを出力するのでは、出力は次のようになりますhttps://gist.github.com/arodiss/90ea76e5f5545af6b11e7f1dcfee01b5

お知らせ

[8 6 4 2 6 8 7 6 6 7 6 6 4 7 0 6] 
[1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1] 
[9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9] 
[2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2] 
[4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4] 
[7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7] 
[4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4] 
[2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2] 
[3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3] 

(... and so on) 

基本的に、最初の(ランダムな)ものを除くすべてのミニバッチで、すべての例が同じラベルを持っていますが、これは明らかに間違っています。代わりに私自身が確率を出力すると、次のようなものが得られます。

[[ 4.38091134e-30 1.28820540e-15 1.00000000e+00 1.73298234e-28 
    7.69853474e-13 2.90028703e-19 9.43878135e-12 5.07752279e-17 
    3.48896642e-33 3.62770106e-26] 
[ 0.00000000e+00 2.62364278e-33 3.19788233e-34 0.00000000e+00 
    3.95365081e-34 1.00000000e+00 1.16309332e-11 0.00000000e+00 
    5.20279699e-38 0.00000000e+00] 
[ 3.01065546e-22 3.79994231e-11 3.48180471e-08 1.23861001e-14 
    4.11970850e-31 1.00000000e+00 4.88898765e-25 0.00000000e+00 
    4.25802429e-18 0.00000000e+00] 

(... and so on) 

この特定の問題を解決するにはどうすればよいですか? 全体的なアドバイスはありますか? (初心者としては間違った方法で多くのことをやったことがあります)

回答::自分のデータを「最初にチャンネル」としてコード化しましたが、「最後にチャンネル」として扱いました。 これは畳み込みによって特定の結果につながります。つまり、バッチ内のすべての項目に同じラベルが付きます。

答えて

1

MNISTは古典的な例であり、実際に公式のテンソルフローチュートリアル(https://www.tensorflow.org/get_started/mnist/beginners)の一部です。

ここでの問題は、データセットをシャッフルせず、同じラベルを使用してミニバッチでしか訓練を受けておらず、バッチ正規化を使用してちょっと学んだことです。また、サンプルにはすべてのミニバッチに対して同じラベルが付いている可能性があります。あなたのプログラムを判断するための正確なメトリックを与えるべきです。

関連する問題