搞懂了精度的意义

2018/07/26 测试

Posted by WangXiaoDong on July 26, 2018
    今天周四,进过昨天师兄给我的提醒,今天我决定仔细研究一下准确度,翻开源码,发现准确度在keras文件
夹下的mertics.py文件里面,而在之前的keras/engine/文件夹下面的training.py里面搜索accuracy关键字,
就能够找到其逻辑是在给定'accuracy'或者'acc'字符串的情况下,选择准确度函数的准则是根据最后一个维度的
长度和损失函数决定的,跟我我的情况,选择的就是mertics.py文件的categorical_accuracy函数,这个函数的
返回值是K.cast(K.equal(K.argmax(y_true, axis=-1),K.argmax(y_pred, axis=-1)),K.floatx()),经过测试,
最后返回的如果是一个向量的话,返回值会自动求一个均值,这个实现我不知在哪里体现的。不过还算是理解了
其运行机理,其准确度实际是根据我输出的每一个时间步作对比算出来的!
    搞清楚准确度的用法后,我又使用了双向LSTM对使用数据进行测试,结果发现非常异常,即训练达到了100%的
精度,但是学习到的行为模式仅仅是开始到结尾,经过仔细思考,我发现我的输入数据和输出数据是向前错位的
关系,这样如果反向传递数据就会使得后一项完全能预测前一项的内容,这样子学到的模型完全没有意义!看来这个
方向行不通,因此我必须研究attention机制来进行网络的改进!