Tensorflow基本的泰坦尼克示例:精度卡住

时间:2017-09-02 07:21:58

标签: tensorflow

我正在努力教育自己的张量流。我决定使用tf.layers,tf.train或keras在tensorflow中实现臭名昭着的kaggle titanic挑战,没有。我正在使用可能是一个可笑的超大网络。我的问题是我似乎无法使准确度计算正确。

在我的例子中,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([accuracy,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

1 个答案:

答案 0 :(得分:0)

好吧,我想通了,感谢天津的暗示。我在检查Y和Y _:

的相等性之前进行了舍入
Y_int = tf.cast(Y, tf.float32)
is_correct = tf.equal(tf.round(Y_int),Y_)