2017-09-02 55 views
1

我試圖教導我自己的tensorflow。我決定使用tf.layers,tf.train或keras來實施張量流中的臭名昭着的kaggle泰坦尼克挑戰,沒有。我使用的可能是一個超大號的網絡。我的問題是,我似乎無法正確計算準確度。Tensorflow基本泰坦尼克號示例:精度卡住

在我的例子中,Y是我最後一層(寬度爲1)的輸出。 Y_是該訓練示例的標籤。所以,當我計算精度,我計算它爲:

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)) 

我運行它每500次迭代: A,C = sess.run([精度,XE],feed_dict = TEST_DATA)

十字熵減少「很好」 - 有很大的改進空間,但它確實會改變迭代的迭代過程。準確度,雖然是頑固堅持(這是第一個值):

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

編輯:完整的Python文件: https://github.com/mrx80/so/blob/master/titanic_nn.py

+0

您能給出Y和Y_的實際值嗎? –

+0

在這裏你去:0.651685 32.1792 Ÿ:: [-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

好的,我想到了,這要感謝天津的提示。在檢查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