当前位置: 首页 > news >正文

怎么做纯文本网站火锅网站建设

怎么做纯文本网站,火锅网站建设,视频网站建设教程,摄影网站制作软件1、概述 PyTorch 数据加载利用的核心是torch.utils.data.DataLoader类 。它表示在数据集上 Python 可迭代#xff0c;支持 map-style and iterable-style datasets#xff08;地图样式和可迭代样式数据集#xff09;#xff0c; customizing data loading order#xff…1、概述 PyTorch 数据加载利用的核心是torch.utils.data.DataLoader类 。它表示在数据集上 Python 可迭代支持 map-style and iterable-style datasets地图样式和可迭代样式数据集 customizing data loading order自定义数据加载顺序 automatic batching自动批处理 single- and multi-process data loading单进程和多进程数据加载 automatic memory pinning自动内存固定。 这些选项由 a 的构造函数参数配置 DataLoader其签名为 DataLoader(dataset, batch_size1, shuffleFalse, samplerNone,batch_samplerNone, num_workers0, collate_fnNone,pin_memoryFalse, drop_lastFalse, timeout0,worker_init_fnNone, *, prefetch_factor2,persistent_workersFalse)以下部分详细描述了这些选项的效果和用法。 2、Dataset Types数据类型 DataLoader 构造函数最重要的参数是dataset它指示要从中加载数据的数据集对象。PyTorch 支持两种不同类型的数据集 map-style datasets,地图式数据集 iterable-style datasets.可迭代式数据集。map-style datasets 地图式数据集 映射式数据集是一种实现__getitem__()和 len()协议的数据集并表示从可能是非整数索引/键到数据样本的映射。 例如这样的数据集当使用 访问时dataset[idx]可以从磁盘上的文件夹中读取第 idx-th个图像及其相应的标签。 请参阅Dataset了解更多详情。 iterable-style datasets可迭代式数据集 CLASStorch.utils.data.IterableDataset(*args, **kwds)可迭代样式数据集是实现协议__iter__()的IterableDataset 子类的实例并表示数据样本上的一个迭代迭代。这种类型的数据集特别适合随机读取成本昂贵甚至不可能的情况以及批量大小取决于获取的数据的情况。 例如这样的数据集在调用时iter(dataset)可以返回从数据库、远程服务器甚至实时生成的日志读取的数据流。 所有表示数据样本可迭代对象的数据集都应该继承它。当数据来自流时这种形式的数据集特别有用。 请参阅IterableDataset了解更多详情。 Example 1: splitting workload across all workers in iter(): class MyIterableDataset(torch.utils.data.IterableDataset):def __init__(self, start, end):super(MyIterableDataset).__init__()assert end start, this example code only works with end startself.start startself.end enddef __iter__(self):worker_info torch.utils.data.get_worker_info()if worker_info is None: # single-process data loading, return the full iteratoriter_start self.startiter_end self.endelse: # in a worker process# split workloadper_worker int(math.ceil((self.end - self.start) / float(worker_info.num_workers)))worker_id worker_info.iditer_start self.start worker_id * per_workeriter_end min(iter_start per_worker, self.end)return iter(range(iter_start, iter_end)) # should give same set of data as range(3, 7), i.e., [3, 4, 5, 6]. ds MyIterableDataset(start3, end7)# Single-process loading print(list(torch.utils.data.DataLoader(ds, num_workers0))) [tensor([3]), tensor([4]), tensor([5]), tensor([6])# Mult-process loading with two worker processes # Worker 0 fetched [3, 4]. Worker 1 fetched [5, 6]. print(list(torch.utils.data.DataLoader(ds, num_workers2))) [tensor([3]), tensor([5]), tensor([4]), tensor([6])]# With even more workers print(list(torch.utils.data.DataLoader(ds, num_workers12))) [tensor([3]), tensor([5]), tensor([4]), tensor([6])]Example 2: splitting workload across all workers using worker_init_fn: class MyIterableDataset(torch.utils.data.IterableDataset):def __init__(self, start, end):super(MyIterableDataset).__init__()assert end start, this example code only works with end startself.start startself.end enddef __iter__(self):return iter(range(self.start, self.end)) # should give same set of data as range(3, 7), i.e., [3, 4, 5, 6]. ds MyIterableDataset(start3, end7)# Single-process loading print(list(torch.utils.data.DataLoader(ds, num_workers0))) # Directly doing multi-process loading yields duplicate data print(list(torch.utils.data.DataLoader(ds, num_workers2)))# Define a worker_init_fn that configures each dataset copy differently def worker_init_fn(worker_id):worker_info torch.utils.data.get_worker_info()dataset worker_info.dataset # the dataset copy in this worker processoverall_start dataset.startoverall_end dataset.end# configure the dataset to only process the split workloadper_worker int(math.ceil((overall_end - overall_start) / float(worker_info.num_workers)))worker_id worker_info.iddataset.start overall_start worker_id * per_workerdataset.end min(dataset.start per_worker, overall_end)# Mult-process loading with the custom worker_init_fn # Worker 0 fetched [3, 4]. Worker 1 fetched [5, 6]. print(list(torch.utils.data.DataLoader(ds, num_workers2, worker_init_fnworker_init_fn)))# With even more workers print(list(torch.utils.data.DataLoader(ds, num_workers12, worker_init_fnworker_init_fn)))笔记 当使用多进程数据加载的IterableDataset时。在每个工作进程上复制相同的数据集对象因此必须对副本进行不同的配置以避免重复数据。请参阅IterableDataset文档了解如何实现这一点。 3、数据加载顺序和Sampler 对于可迭代样式的数据集数据加载顺序完全由用户定义的可迭代控制。这允许更容易地实现块读取和动态批量大小例如通过每次生成批量样本。 本节的其余部分涉及地图样式数据集的情况 。torch.utils.data.Sampler 类用于指定数据加载中使用的索引/键的序列。它们表示数据集索引上的可迭代对象。例如在随机梯度下降 (SGD) 的常见情况下a Sampler可以随机排列一系列索引并一次生成每个索引或者为小批量 SGD 生成少量索引。 A sequential or shuffled sampler将根据DataLoader 的shuffle参数自动构。或者用户可以使用sampler参数来指定一个自定义Sampler对象该对象每次都会生成下一个要获取的索引/键。 自定义Sampler一次生成批次索引列表可以作为batch_sampler参数传递。自动批处理也可以通过batch_size和drop_last 参数启用。有关这方面的更多详细信息请参阅 下一节。 注意 sampler和batch_sampler都不兼容可迭代风格的数据集因为这样的数据集没有概念。 4、加载批量和非批量数据 DataLoader支持自动将单独获取的数据样本通过参数 batch_size、drop_last、batch_sampler和 collate_fn具有默认功能整理为批次 自动批处理默认 这是最常见的情况对应于获取小批量数据并将它们整理成批量样本即包含一个维度为批量维度通常是第一个维度的张量。 当batch_size默认1不是None时数据加载器将生成批量样本而不是单个样本。batch_size和 drop_last参数用于指定数据加载器如何获取批量的数据集键。对于地图样式数据集用户也可以指定batch_sampler这一次会生成一个键列表。 在使用来自sampler的索引获取样本列表之后使用作为collate_fn参数传递的函数将样本列表整理成批。 在这种情况下从地图样式的数据集加载大致相当于: for indices in batch_sampler:yield collate_fn([dataset[i] for i in indices])从可迭代风格的数据集加载大致相当于: dataset_iter iter(dataset) for indices in batch_sampler:yield collate_fn([next(dataset_iter) for _ in indices])禁用自动批处理 在某些情况下用户可能希望在数据集代码中手动处理批处理或者简单地加载单个样本。例如直接加载批处理数据(例如从数据库中批量读取或读取连续的内存块)可能更便宜或者批处理大小依赖于数据或者程序被设计为处理单个样本。在这些场景下最好不要使用自动批处理(其中collate_fn用于整理样本)而是让数据加载器直接返回数据集object的每个成员。 当batch_size和batch_sampler都为None时(batch_sampler的默认值已经为None)自动批处理被禁用。从数据集中获得的每个样本都使用作为collate_fn参数传递的函数进行处理。 当自动批处理被禁用时默认的collate_fn只是将NumPy数组转换为PyTorch张量并保持其他所有内容不变。 在这种情况下从地图样式的数据集加载大致相当于: for index in sampler:yield collate_fn(dataset[index])从可迭代风格的数据集加载大致相当于: for data in iter(dataset):yield collate_fn(data)Working with collate_fn 例如如果每个数据样本由一个3通道图像和一个整数类标签组成也就是说数据集的每个元素返回一个元组(image, class_index)默认collate_fn将这样的元组列表整理成一个批处理图像张量和一个批处理类标签张量的元组。特别是默认的collate_fn具有以下属性: 5、Single- and Multi-process Data Loading 默认情况下DataLoader使用单进程数据加载。 torch.utils.data.get_worker_info()返回工作进程中的各种有用信息(包括工作进程id数据集副本初始种子等)并在主进程中返回None。用户可以在数据集代码和/或worker_init_fn中使用这个函数来单独配置每个数据集副本并确定代码是否在工作进程中运行。例如这在对数据集进行分片时特别有用。
http://www.sadfv.cn/news/300003/

相关文章:

  • 做视频解析网站是犯法的么网站设计建设
  • 网站建设维护专员wordpress 内核月报
  • 张家口专业做网站公司阿里巴巴的关联网站
  • 揭阳网站开发mituad东莞寮步伟易达电子厂
  • 网站 购买西峡网站建设
  • 营销型外贸网站服务器搭建网站域名配置
  • 成都学校网站制作公司西安黄页查询
  • 手机网站的视频怎么才能下载有没有做数学题挣钱的网站
  • 网站怎么增加流量网站备案相关手续费
  • 邹城建网站wordpress多媒体路径
  • qq可以做公司免费网站seo 网站换程序
  • 合作制作网站做番号网站的 违法
  • 网络运营推广培训课程舟山seo
  • 重庆市建设公共资源交易中心网站首页阻止网站查到访问者ip
  • 外贸网站建设公司渠道h5模板怎么制作
  • 深圳制作网站的公司淘宝 wordpress
  • wordpress4.6.9seo关键词排名技巧
  • 织梦网站转移服务器手机桂林生活网
  • 一个网站需要几个人做福建自己建设网站
  • 网站项目流程表一级做爰片软件网站
  • 高端营销网站建设泰国vps
  • 网站APP注册做任务水墨画风格网站
  • 重庆手机网站推广报价大秦建设集团有限责任公司官方网站
  • 新建建设兵团科技局网站wordpress手机登陆不了
  • 青园网站建设wordpress出现404
  • 网站和网店的区别wordpress网站go.php跳转
  • 建设部网站内装修标准九九建筑网
  • 做网站如何赚广费谷歌手机网页版入口
  • 阿里云网站方案建设书科技有限公司取名字
  • 济南烨铭网站建设杭州市建设工程造价信息网