2017-07-03 6 views
0

TensorFlowで設定されたMNISTデータを持つ畳み込みニューラルネットワーク(CNN)を訓練します。私は各画像の精度をMNISTテスト画像から計算し、10個の出力ノードの値を探します。私は(:How to get the value from each output-node during eval MNIST testdata in TensorFlow?ここではすべてのコードを参照してください):それを得るために、次のコード行を使用しTensorFlowで巨大な正と負の値を持つ配列/ベクトルにsoftmaxを適用するにはどうすればよいですか?

pred=prediction.eval(feed_dict={ x: testSet[0], y: testSet[1]}) 

のコード行の出力は、たとえば、このです:私は適用しようとすると

[[ -13423.92773438 -27312.79296875 20629.26367188 42987.953125 
-34635.8203125 3714.84619141 -60946.6328125 106193.8828125 
-20936.08789062 3940.52636719]] 

次のコードで、このベクトル/アレイでtf.nn.softmax()関数:

pred_softmax = tf.nn.softmax(pred) 
print(pred_softmax_new.eval()) 

Iは、例えば、この出力を得ます

[[ 0. 0. 0. 0. 0. 0. 0. 1. 0. 0.]] 

しかし、私はこのような結果を探しています:

[[ 0.001 0.207 0.001 0.001 0.002 0.001 0.001 0.9723 0.001 0.001]] 

私はこのコードをテスト:

test_a = tf.nn.softmax([31.0,23.0]) 
print(test_a.eval()) 

この出力を得る:

[ 9.99664664e-01 3.35350138e-04] 

しかし、私は値を大きくした場合like:

test_a = tf.nn.softmax([45631.0,65423.0]) 

私はこの出力を得る:

[ 0. 1.] 

だから私の質問は、この例のように10、出力ノードのために良い読める出力を取得する方法があります:

[[ 0.001 0.207 0.001 0.001 0.002 0.001 0.001 0.9723 0.001 0.001]] 

答えて

1

これはのように思えるが、数値安定性の問題はhereと述べています。私はあなたの数字の違いが非常に大きいので、あなたのケースでは、リンクに記載されている答えが助けになるとは思わない。基本的には、あなたのモデルは確率0.999999999で7の値を予測しているようです。

関連する問題