Pytorch中如何使用ImageFolder读取数据集时忽略特定文件
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍Pytorch中如何使用ImageFolder读取数据集时忽略特定文件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、使用ImageFolder读取数据集时忽
千家信息网最后更新 2026年11月03日Pytorch中如何使用ImageFolder读取数据集时忽略特定文件
这篇文章主要介绍Pytorch中如何使用ImageFolder读取数据集时忽略特定文件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
一、使用ImageFolder读取数据集时忽略特定文件
如果事先知道需要忽略哪些文件,当然直接从数据集里删除就行了。但如果需要在程序运行时动态确认,或者筛选规则比较复杂,人工不好做,就需要让ImageFolder在读取时使用自定义的筛选规则。
ImageFolder有一个可选参数为is_valid_file,参数类型为可调用的函数,该函数传入一个str参数,返回一个bool值。当返回值为True时保留该文件,否则忽略。
例如,读取时想要忽略所有文件名带‘invalid’的文件,
代码如下:
import platformfrom torchvision.datasets import ImageFolderclass Check(object): def __init__(self, key_word: str): self.key_word = key_word self.separator = '\\' if platform.system() == 'Windows' else '/' def __call__(self, file_name: str) -> bool: folders = file_name.split(self.separator) return folders[-1].find(self.key_word) < 0dataset = ImageFolder('./data', is_valid_file=Check('invalid'))这里定义了一个实现了__call__方法的Check类,相比于直接定义函数的好处在于可以在构造函数里指定想要忽略的字符,并且能够根据操作系统的不同把文件目录分隔符给确定了。
更加复杂的功能可以自行修改代码逻辑实现,但是要注意如果某个类别的所有文件都被筛选掉了,ImageFolder会报FileNotFoundError错误。
如果想要忽略整个类别可以使用下面方法!!!
二、ImageFolder只读取部分类别文件夹
直接继承并且重写ImageFolder类的find_classes方法即可
from torchvision.datasets.folder import *from typing import *class FilterableImageFolder(ImageFolder): def __init__( self, root: str, transform: Optional[Callable] = None, target_transform: Optional[Callable] = None, loader: Callable[[str], Any] = default_loader, is_valid_file: Optional[Callable[[str], bool]] = None, valid_classes: List = None ): 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] if not classes: raise FileNotFoundError(f"Couldn't find any class folder in {directory}.") class_to_idx = {cls_name: i for i, cls_name in enumerate(classes)} return classes, class_to_idx使用时,例如有mouse、cat、dog三个类别的数据集文件夹,只想读取cat和dog,
代码如下:
dataset = FilterableImageFolder('./data', valid_classes=['cat', 'dog'])以上是"Pytorch中如何使用ImageFolder读取数据集时忽略特定文件"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
文件
数据
函数
类别
代码
参数
方法
复杂
内容
文件夹
篇文章
规则
不同
操作系统
三个
不好
人工
价值
兴趣
分隔符
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
华服互联网科技靠谱吗
重生之互联网科技帝国
朗新科技与工业互联网
上海互联网科技有限公司
互联网科技排名
成都互联网科技公司
互联网科技ppt模板
睿民互联网科技
互联网科技的未来发展
互联网金融监管科技
上海电发互联网科技有限公司
云创客互联网科技公司
互联网科技热点资讯
迪庆互联网科技招生
互联网科技公司营业执照怎么办理
山东大美朱楼互联网科技有限公司
兰石爱特工业互联网科技分公司
求路客互联网科技电话
马化腾互联网科技教学
互联网科技创业有什么好项目
云之行互联网科技
西安互联网科技公司
济南华为互联网科技产业总部基地
浙江互联网科技研学营
电子科技大学互联网创业大赛
河南住房之家互联网科技
内蒙古九一互联网科技
科技互联网海报
雨阳互联网卡科技有限公司
湖北辰鑫科技互联网