使用tf.train.shuffle_batch()函数读取数据时报错。
看原因的话应该是很简单,就是函数想读取那么多数据,但是没有数据可以读了。
然后我想了想,不能读就不能读呗,可以不用tfrecords啊,但后来一想,实验室资源有限,本来就用不上主机,还是为大家节省点时间,用这个官方的高效读取方法吧。
那就开始漫漫debug吧。
首先自然是在网上看看有没有人遇到过这个问题,好像不多。然后看看他们的问题描述那个和自己的最像,好像没有。看到这里内心是崩溃的。。。
两个多小时debug,心凉凉,想想要不放弃吧,实在不行就用pytorch,反正也有赶超tensorflow的趋势,心有不甘啊。。。
等等,故事还没有结束。
debug到无力,开始从pipeline中查找。
看这个函数的上游是自己写的一个读取tfrecord数据的函数,先对其进行测试,果真有问题。
进行单张图片读取的时候遇到这个问题,也就是tfrecord中的某一个数据有51529=227*227个值,但需要154587=227*227*3个值。也就是说这个数据集丫的在一堆彩色图像中混了一些灰度图像。
至此,问题解决,重新写一下tfrecord文件的生成程序。
这个故事告诉我们,一定要测试每个函数的功能。。。