pytorch读取自己的数据集,pytorch imagefolder

  pytorch读取自己的数据集,pytorch imagefolder

  本文主要介绍Pytorch中使用ImageFolder在读取数据集时忽略特定文件,有参考价值。希望对你有帮助。

  00-1010 1.使用ImageFolder 2读取数据集时忽略特定文件。ImageFolder只读取一些类别文件夹。

  

目录

  如果事先知道哪些文件需要忽略,当然从数据集中删除即可。但如果需要在程序运行时动态确认,或者过滤规则比较复杂,难以手动完成,则需要让ImageFolder在读取时使用自定义过滤规则。

  ImageFolder有一个可选参数is_valid_file,参数类型为可调用函数,传入一个str参数,返回一个bool值。当返回值为真时保留文件,否则忽略它。

  例如,在读取时,您希望忽略文件名中包含“无效”的所有文件。

  代码如下:

  导入平台

  从torchvision.datasets导入图像文件夹

  类别检查(对象):

  def __init__(self,

  key_word: str):

  self.key_word=关键字

  self . separator= \ \ if platform . system()= Windows else /

  def __call__(自我,

  文件名:字符串)-布尔值:

  folders=file_name.split(自身分隔符)

  返回文件夹[-1]。查找(self.key_word) 0

  dataset=ImageFolder(。/data ,is_valid_file=Check(invalid ))

  这里定义了一个实现__call__方法的检查类。与直接定义函数相比,优点是可以在构造函数中指定想要忽略的字符,可以根据不同的操作系统确定文件目录分隔符。

  更复杂的功能可以通过自行修改代码逻辑来实现,但需要注意的是,如果某个类别的所有文件都被过滤掉,ImageFolder会报告一个FileNotFoundError错误。

  如果想忽略整个类别,可以用下面的方法!

  

一、使用ImageFolder读取数据集时忽略特定文件

  直接继承和重写ImageFolder类的find_classes方法。

  从torchvision.datasets.folder导入*

  从输入导入*

  类别FilterableImageFolder(image folder):

  def __init__(

  自我,

  root: str,

  transform:可选[可调用]=无,

  target_transform:可选[可调用]=无,

  loader: Callable[[str],Any]=default_loader,

  is_valid_file:可选[Callable[[str],bool]]=None,

  valid_classes: List=无

  ):

  self.valid _ classes=valid _ classes

  super(FilterableImageFolder,self)。__init__(root,transform,target_transform,loader,is_valid_file)

  def find_classes(self,directory : str)-Tuple[List[str],Dict[str,int]]:

  classes=sorted(entry . name for entry in OS . scandir(directory)if entry . is _ dir())

  #添加以下句子

  classes=[valid _ class for valid _ class in classes if valid _ class in self . valid _ classes]

  如果不是类别:

  引发FileNotFoundError(f 在{directory}中找不到任何类文件夹。)

  class _ to _ idx={ cls _ name : I for I,cls_name in enumerate(classes)}

  返回类,class_to_idx

  比如在使用时,数据集文件夹有三大类,鼠标,猫和狗,而只想读取猫和狗,

  代码如下:

  dataset=FilterableImageFolder(。/data ,valid_classes=[cat , dog])

  关于Pytorch中用ImageFolder读取数据集时忽略特定文件的这篇文章到此为止。关于使用ImageFolder读取数据集的更多信息,请搜索热门IT软件开发工作室之前的文章或继续浏览下面的相关文章。希望大家以后多多支持热门IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: