基于Pythorch的库一般侧重于数据处理和输入管道。
torchdata的Python项目详细描述
- 直接在
Dataset
对象上使用map
、apply
、reduce
或filter
cache
RAM/磁盘中的数据或通过您自己的方法(支持部分缓存)- 完整的PyTorch的^{
} 和^{} 支持 - 一般
torchdata.maps
类似Flatten
或{} - 可扩展接口(您自己的缓存方法、缓存修饰符、映射等)
- 为一般任务(例如文件读取)设计的有用的
torchdata.datasets
类 - 通过
td.datasets.WrapDataset
支持torchvision
数据集(例如ImageFolder
,MNIST
,CIFAR10
) - 最小开销(对
super().__init__()
的单个调用)
Version | Docs | Tests | Coverage | Style | PyPI | Python | PyTorch | Docker | Roadmap |
---|---|---|---|---|---|---|---|---|---|
:灯泡:示例
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
)连接起来,并按照通常的方式迭代它们:
- 首先将
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
一起使用
实例给它额外的caching
和mapping
次幂!在
:扳手:安装
:蛇: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 Issue或create Pull Request。在
要想获得对这个项目有帮助的事情的概述,请参见Roadmap
- 项目
标签: