2017-09-02 11 views
1

私はテンソルフローについて自分自身を教育しようとしています。私は、tf.layers、tf.train、またはkerasを使用して、を使わずに、テンソルフローで悪名高いカグルのタイタニックチャレンジをなしで実装することに決めました。私はおそらくコミックに特大のネットワークを使用しています。私の問題は、正確な計算が正しいとは思えないということです。Tensorflow基本的なチタンの例:精度が固定

私の例では、Yは最終層(幅1)の出力です。 Y_はその訓練例のラベルです。私はそれをすべての500回の反復を実行し

Y_int = tf.cast(Y_, tf.int64) 
is_correct = tf.equal(tf.argmax(Y,1),Y_int) 

accuracy = tf.reduce_mean(tf.cast(is_correct,tf.float32)) 

::私は精度を計算するときのようにそう、私はそれを計算 、C = sess.run([精度、XE]、feed_dict = TEST_DATA)

クロスエントロピーは「きれいに」減少します。改善の余地はたくさんありますが、反復を反復に変更します。精度は、しかし、(これが第1の値です)頑固にこだわっている:

ITER:0

0.606742 72.3839

ITER:500

0.606742 42.3199

ITER:1000

.....

iter:18500

0.606742 38.2022

ITER:19000

0.606742 38.4258

ITER:19500

0.606742 37.9204

EDIT:フルPythonのファイル: https://github.com/mrx80/so/blob/master/titanic_nn.py

+0

1つのiterに実際の値を与えることはできますか? –

+0

ここに行く:0.651685 32.1792 Y :: [[-9.14530421e-04] [1.29497278e + 00] [-9.14530421e-04] [1.02632809e + 00] [3.94688576e-01] [ 9.22473788e-01] [-9.14530421e-04] [-9.14530421e-04] [1.29656982e + 00] [1.06453359e + 00] Y_:[[0] [1] [0 ] [1] [1] [1] [0] [0] [1] [1] – Madhu

答えて

0

OK、上の天津のヒントのおかげで、私はそれを理解しました。私はYとYの等価性をチェックする前に丸めました:

Y_int = tf.cast(Y, tf.float32) 
is_correct = tf.equal(tf.round(Y_int),Y_) 
+0

さらに良い:is_correct = tf.equal(TF .round(Y)、Y_) – Madhu