Python 来自数据帧的Keras flow_给出0个图像

Python 来自数据帧的Keras flow_给出0个图像,python,keras,Python,Keras,我尝试使用Keras的方法来阅读训练和测试图像 我的培训和测试图像都在同一个目录中,我从两个不同的csv文件中读取路径 我读取测试图像的代码如下所示 # Read test file testdf = pd.read_csv("test.csv") # load images test_datagen = ImageDataGenerator(rescale=1./255) test_generator = test_datagen.flow_from_dataframe( data

我尝试使用Keras的方法来阅读训练和测试图像

我的培训和测试图像都在同一个目录中,我从两个不同的csv文件中读取路径

我读取测试图像的代码如下所示

# Read test file
testdf = pd.read_csv("test.csv")

# load images
test_datagen = ImageDataGenerator(rescale=1./255)

test_generator = test_datagen.flow_from_dataframe(
    dataframe=testdf, directory=IMAGE_PATH,
    x_col='image_name', y_col=None,
    has_ext=True, target_size=(10,10)
    ,batch_size=32,color_mode='rgb',shuffle=False, class_mode=None)
我得到这样的输出

Found 0 images.
而读取训练数据的类似代码可以正常工作。我检查了图像是否存在于给定的路径中,它们确实存在。这一错误的可能原因是什么?如何尝试调试该问题

编辑:这是一项回归任务,因此所有图像都在一个目录中,而不是在子目录中,这与分类任务所期望的一样


编辑2:我添加了
usecols=[0]
来读取\u csv,现在test\u datagen会找到目录中的所有图像,而不仅仅是test.csv文件中提到的图像

问题的发生是由于数据框中的NaN。忽略这些列是行不通的。解决办法是用其他东西代替NaN。比如说,

testdf = pd.read_csv("test.csv")
testdf.fillna(0, inplace=True)

这将用0替换NaN。然后像往常一样使用
ImageDataGenerator

我也遇到了同样的错误,并找到了解决方法。 我使用的是绝对路径,使用的是正确的数据帧,一切都很好,但是代码抛出了一个错误——“找不到图像”

我检查后发现,我的数据框中包含的图像名称没有扩展名,文件夹中的图像也有扩展名。 例如,DataFrame中的图像名称为“abc”,但文件夹中的图像名称为“abc.png”。 只需在DataFrame中的图像名称中添加.png,它就能解决您的问题。 我刚刚尝试了下面的代码,结果成功了

def append_ext(fn):
    return fn+".png"
train_valid_data["id_code"]=train_valid_data["id_code"].apply(append_ext)
test_data["id_code"]=test_data["id_code"].apply(append_ext)

让我知道它是否解决了您的问题,或者您是否需要进一步解释。

我也有同样的问题。首先,确保参数
目录
的绝对路径正确

my df中的文件名的值为
image.pgm.png
,文件夹中的实际图像文件的格式为
image.pgm

  • 我试图将df中的文件名更改为
    image.pgm
    =>仍然无法工作
  • 我将图像文件从
    image.pgm
    重命名为
    image.pgm.png
    ,它与df=>中的格式完全匹配
    “image_name”列中的图像名称应仅为图像名称,不包含路径。你能确认吗?@sdcbr是的。示例:
    12345.png
    。它们都以png结尾,名字中有随机数字/字母。