其实enumerate()函数本身没啥问题,通常使用方法如下:
然而我踩的坑是这样的,最近项目中使用TensorFlow,生成TFRecord数据集,训练完成后在测试集上测试,发现预期能分的好的类别分的不好,而预期分的糟糕的类别竟然precision很高。可是对于label对应我还是非常坚定的认为不会出错。
最终,还是好好检查了一下生成数据集的代码,没想到测试下面的代码时,竟然结果出乎意料:
竟然不是按顺序输出的!
我立刻发现,classes用的是set类型,而不是通常的list。如下图,list肯定是按顺序输出的:
好在找到了原因,这里记录一下,以后别再出错了。