基于Pythorch的库一般侧重于数据处理和输入管道。

torchdata的Python项目详细描述


  • 直接在Dataset对象上使用mapapplyreducefilter
  • cacheRAM/磁盘中的数据或通过您自己的方法(支持部分缓存)
  • 完整的PyTorch的^{}^{}支持
  • 一般torchdata.maps类似Flatten或{}
  • 可扩展接口(您自己的缓存方法、缓存修饰符、映射等)
  • 为一般任务(例如文件读取)设计的有用的torchdata.datasets
  • 通过td.datasets.WrapDataset支持torchvision数据集(例如ImageFolderMNISTCIFAR10
  • 最小开销(对super().__init__()的单个调用)
VersionDocsTestsCoverageStylePyPIPythonPyTorchDockerRoadmap
VersionDocumentationTestsCoveragecodebeatPyPIPythonPyTorchDockerRoadmap

:灯泡:示例

Check documentation here:https://szymonmaszke.github.io/torchdata

一般示例

  • 创建图像数据集,将其转换为张量,缓存并与平滑标签连接:
importtorchdataastdimporttorchvisionclassImages(td.Dataset):# Different inheritancedef__init__(self,path:str):super().__init__()# This is the only changeself.files=[fileforfileinpathlib.Path(path).glob("*")]def__getitem__(self,index):returnImage.open(self.files[index])def__len__(self):returnlen(self.files)images=Images("./data").map(torchvision.transforms.ToTensor()).cache()

您可以将上面的数据集与另一个数据集(比如labels)连接起来,并按照通常的方式迭代它们:

^{pr2}$
  • 首先将1000个样本缓存到内存中,其余的保存在磁盘上的文件夹./cache
images=(ImageDataset.from_folder("./data").map(torchvision.transforms.ToTensor())# First 1000 samples in memory.cache(td.modifiers.UpToIndex(1000,td.cachers.Memory()))# Sample from 1000 to the end saved with Pickle on disk.cache(td.modifiers.FromIndex(1000,td.cachers.Pickle("./cache")))# You can define your own cachers, modifiers, see docs)

要查看您还可以做什么,请检查torchdata documentation

torchvision集成

使用torchdata可以很容易地分割torchvision数据集并应用扩充 只对数据的训练部分没有任何问题:

importtorchvisionimporttorchdataastd# Wrap torchvision dataset with WrapDatasetdataset=td.datasets.WrapDataset(torchvision.datasets.ImageFolder("./images"))# Split datasettrain_dataset,validation_dataset,test_dataset=torch.utils.data.random_split(model_dataset,(int(0.6*len(dataset)),int(0.2*len(dataset)),int(0.2*len(dataset))),)# Apply torchvision mappings ONLY to train datasettrain_dataset.map(td.maps.To(torchvision.transforms.Compose([torchvision.transforms.RandomResizedCrop(224),torchvision.transforms.RandomHorizontalFlip(),torchvision.transforms.ToTensor(),torchvision.transforms.Normalize(mean=[0.485,0.456,0.406],std=[0.229,0.224,0.225]),])),# Apply this transformation to zeroth sample# First sample is the label0,)

请注意,您可以将td.datasets.WrapDataset与任何现有的torch.utils.data.Dataset一起使用 实例给它额外的cachingmapping次幂!在

:扳手:安装

:蛇:pip

最新版本:

pip install --user torchdata

每晚:

pip install --user torchdata-nightly

:whale2:Docker

CPU standalone和启用了GPU的各种版本的映像可用 在dockerhub。在

对于CPU快速启动,问题:

docker pull szymonmaszke/torchdata:18.04

也可以使用夜间构建,只需在标记前面加上nightly_。如果您要使用GPU图像,请确保 nvidia/docker已安装,它的运行时集。在

:问题:贡献

如果您发现任何问题,或者您认为某些功能可能对其他人有用并且适合此库,请open new Issuecreate Pull Request。在

要想获得对这个项目有帮助的事情的概述,请参见Roadmap

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
当您有许多具有不同密钥值的位置时,java Enterprise是加密环境变量的正确方法   java如何使用视图保持器模式制作自定义适配器?   java如何迭代Camel体中的嵌套列表?   序列化用base 64进行Java序列化   java打开文件的最佳方式(并确保选择了文件)   java marvin图像色差插件错误   java如何在eclipse中添加属性文件文件夹   比较java。util。日历日期到java。util。日期   java无法在下一个类(活动)中获取哈希表   java如何将这段代码转换为循环?   java查找通过REST失败   java getIntent返回null   在Java中,如何通过外部集合从内部集合检索数据?   java单点登录以保护REST API和内部基于web的系统