愿天堂没有Tensorflow! 阿门。
Invalid Argument Error: Invalid JPEG data size 49
在我准备好训练数据,准备把数据放入网络训练时,在程序运行到这一行时,提示上述错误:
image = tf.image.decode_jpeg(image_contents, channels=3)
根据提示,很明显,是告诉我们文件里有非JPEG格式的图片,可是我打开文件夹,仔细找了一下,并没有发现有任何非JPEG的图片
通过下面的命令,查了几个疑似图片也没有发现错误:
file 005061.jpg
但是上述代码不能帮我们找所有文件,于是我准备了下面的程序来找出那个不是JPEG格式的文件:
import numpy as np
import os
train_dir = '/home/mml/net/rain-1/'
def get_files(file_dir):
name = []
for file in os.listdir(file_dir):
name.append(file_dir + file)
print('There are %d image' %(len(name)))
return name
a = get_files(train_dir)
b = len(a)
from PIL import Image
def is_jpg(filename):
try:
i=Image.open(filename)
return i.format =='JPEG'
except IOError:
print(filename)
return False
for i in range(b):
is_jpg(a[i])
通过上述代码我们可以找到文件夹下面所有不是JPEG格式的文件,最终发现我的眼睛没有瞎(/大哭),不是JPEG格式的文件原来是几个隐藏文件,怪不得我找不到,所以只要点击显示隐藏文件,上述步骤就可以全省了(/大哭),但是上述步骤思路还是比较清晰的,如果有一些图片后缀是jpg但是也有可能不是JPEG格式,所以上述步骤还是很好的查找过程。