を訓練した後、すべての項目の同じ出力に収束します人間とキュウリの違いを特定できるプログラムを作成して作成することは良い考えです。私はプログラムを取っていると考えているステップのリストを作成した画像、ネットから画像を引っ張って、キュウリ/TensorFlowは常に、これは私が働いているコードの一部である
に人間/とキュウリの写真の中に人の絵を置く:
ファイルパスとキーの配列が作成され、次にシャッフルされます。
ファイルパスのバッチが作成されます。
バッチからのファイルパスはイメージに変換され、250x250にサイズ変更され、イメージバッチ配列に追加されます(この時点でキーとイメージはまだ整列しています)。
イメージバッチとキーバッチがアレイに供給されます。
すべてのエポックの最後に、各画像の10個に対してネットワークをテストします。
[[ 0.53653401 0.46346596]] [0] [0, 1] [[ 0.53653401 0.46346596]] [0] [0, 1] [[ 0.53653401 0.46346596]] [0] [0, 1] [[ 0.53653401 0.46346596]] [0] [1, 0] [[ 0.53653401 0.46346596]] [0] [1, 0] [[ 0.53653401 0.46346596]] [0] [0, 1] [[ 0.53653401 0.46346596]] [0] [1, 0] [[ 0.53653401 0.46346596]] [0] [1, 0] [[ 0.53653401 0.46346596]] [0] [1, 0] [[ 0.53653401 0.46346596]] [0] [0, 1] [[ 0.53653401 0.46346596]] [0] [1, 0] [[ 0.53653401 0.46346596]] [0] [0, 1] [[ 0.61422414 0.38577583]] [0] [1, 0] [[ 0.53653401 0.46346596]] [0] [0, 1] [[ 0.53653401 0.46346596]] [0] [1, 0] [[ 0.53653401 0.46346596]] [0] [1, 0] [[ 0.53653401 0.46346596]] [0] [0, 1] [[ 0.53653401 0.46346596]] [0] [0, 1] [[ 0.53653401 0.46346596]] [0] [0, 1] [[ 0.53653401 0.46346596]] [0] [1, 0]
最初のアレイ出力の出力ノード、二番目の配列はtf.argmaxある()である:私はuse_network()を実行すると、私はコンソールにこの出力を得る
、そして3番目は期待されていたものです。
実際の学習は、これは学習から出力されると、あまりにもかなり小さいように思える:
Epoch 1 completed out of 50 Error 3762.83390808
Epoch 2 completed out of 50 Error 3758.51748657
Epoch 3 completed out of 50 Error 3753.70425415
Epoch 4 completed out of 50 Error 3748.32539368
Epoch 5 completed out of 50 Error 3742.45524597
Epoch 6 completed out of 50 Error 3736.21272278
Epoch 7 completed out of 50 Error 3729.56756592
...
Epoch 45 completed out of 50 Error 3677.34605408
Epoch 46 completed out of 50 Error 3677.34388733
Epoch 47 completed out of 50 Error 3677.34150696
Epoch 48 completed out of 50 Error 3677.3391571
Epoch 49 completed out of 50 Error 3677.33673096
Epoch 50 completed out of 50 Error 3677.33418274
私は物事を試してみて、変更するには、次の操作を行うことを試みてきた:
画像を小さくする、例えば32x32、および/または白黒にする。より小さな画像が予測の変化につながるかどうかを確認する。
reduce_sumとreduce_meanの間のコスト式と、sigmoid_cross_entropyとsoftmax_cross_entropyの間の内部式を変更します。
私はそれが働いてイマイチ理由としていくつかのアイデアを持っており、以下のように、彼らは以下のとおりです。
だけ貧しいコード
入力データが大きすぎと十分ではないノード/レイヤーをプロセスへ。
イメージと関連付けられたキーがどこかでスクランブルされています。
学習率を下げてみてください。それが私の経験からこの問題の最も一般的な原因です。 – chasep255