在实现RetinexNet代码复现过程中出现ValueError: Cannot feed value of shape (1, 331, 496, 4) for Tensor 'input_low:0', which has shape '(?, ?, ?, 3)',这样的问题,经过查找资料,发现是因为输入数据张量不符合要求导致的。但是在复现过程中,有些图像不会报错,有些图像就会报错,在代码print后发现,报错图像的数据的shape是(?, ?, ?, 4),每个数组比正常运行的数据多了一个元素1,
发现是载入数据的问题,阅读代码后发现该数据来自main.py中86行
test_low_im = load_images(test_low_data_name[idx])
继续阅读代码,找到load_images函数来自工程下utils.py文件
def load_images(file):
im = Image.open(file)
return np.array(im, dtype="float32") / 255.0
测试报错和不报错图片,发现图像1和2的区别,其中im2为报错图像
查找资料后发现RGBA图像比RGB图像多了一个透明度的值