其实enumerate()函数本身没啥问题,通常使用方法如下:

然而我踩的坑是这样的,最近项目中使用TensorFlow,生成TFRecord数据集,训练完成后在测试集上测试,发现预期能分的好的类别分的不好,而预期分的糟糕的类别竟然precision很高。可是对于label对应我还是非常坚定的认为不会出错。
最终,还是好好检查了一下生成数据集的代码,没想到测试下面的代码时,竟然结果出乎意料:

竟然不是按顺序输出的!
我立刻发现,classes用的是set类型,而不是通常的list。如下图,list肯定是按顺序输出的:

好在找到了原因,这里记录一下,以后别再出错了。
在使用TensorFlow处理TFRecord数据集时,作者意外发现使用enumerate()与set类型的classes结合,导致数据分类出现混乱。经过排查,确认了问题所在,并分享了这一经验教训。
360





