flow_from_dataframe,如何定位到错误数据并删除?

来源:6-9 Keras generator读取数据

Riddle2000

2020-05-19

老师你好,
我在使用这个的时候:

trainGen.flow_from_dataframe(train_df,
                             directory='./',
                             x_col='filepath',
                             y_col='class',
                             classes=classes,
                             target_size=(height, width),
                             batch_size=batch_size,
                             seed=3,
                             shuffle=True,
                             class_mode='sparse',)

出现了Warning:

keras_preprocessing/image/dataframe_iterator.py:273: 
UserWarning: 
Found 1 invalid image filename(s) in x_col="filepath". 
These filename(s) will be ignored.

我想把这个文件名/路径打印出来,然后跑去删了,请问有什么办法吗?


或者是单独写一个方法定位出来这个文件,那这样的方法要怎么设计呢?

谢谢

写回答

1回答

正十七

2020-05-24

flow_from_dataframe方法里应该无法实现这个需求。需要自己写一个方法,方法就是遍历所有文件,看那些是错误的数据。

文件夹的组织一般是“类别/文件”,我大概写一下代码,不保证能直接运行:

category_names = os.path.listdir(parent_dir)
for category_name in category_namess:
  category_path = os.path.join(parent_dir, category_name)
  image_names = os.path.listdir(category_path)
  for image_name in image_names:
    image_path = os.path.join(category_path, image_name)
    if not os.path.exists(image_path):
      # rm file
    try:
      img = Image.open(image_path)
    exception:
      # rm file
      ...


1
2
Riddle2000
我后来手动找出来了,是mac自动生成的一个DS文件
2020-05-26
共2条回复

Google老师亲授 TensorFlow2.0 入门到进阶

Tensorflow2.0实战—以实战促理论的方式学习深度学习

1849 学习 · 896 问题

查看课程