一般我们在遇到训练图像大小不统一时,都需要将其统一大小,而TensorFlow提供resize_images函数,然而按一般能找到的资料的使用方式一般是先调用resize_images调整图像大小,然后将其存入TFRecord。但是我们知道像素值是没有小数的,每个通道的值都是0-255,神奇的是在使用resize_images后,进行插值计算后,数据矩阵中的值会被强行变成小数也就是浮点型,本来是无符号字节,在TensorFlow中为uint8,然后莫名其妙的TFRecord中的数据大小就会增加4倍,浮点是32位,所以在读取TFRcord数据时将序列化的数据reshape为 b x h x w x c 时,本来应该是1个样本,也就是b为1,但是却会为4,我真是百思不得其解,终于在利用程序员的debug能力(log输出看看)终于发现这个原因,所以在调整图像大小后再转换一次数据类型就好,但是总感觉有点怪,好麻烦呀,可能我火星了,有什么高级操作
TensorFlow resize_images函数导致TFRecord产生形状不匹配
最新推荐文章于 2022-03-23 17:08:10 发布