Pytorch 中的地图样式数据集具有__getitem__()和__len__(),可迭代样式数据集具有__iter__()协议。如果我们使用地图样式,我们可以访问很棒的数据dataset[idx],但是使用可迭代数据集我们不能。
我的问题是为什么这种区别是必要的?是什么使得数据随机读取如此昂贵甚至不可能?
完整的数据集很可能不适合内存(可能位于磁盘上,或者只能通过网络访问)。如果您不打算访问任意偏移量,则不必保留信息流。如果您要通过网络请求数据[0]、数据[1]、数据[2],那么您将发送大量请求,从而导致延迟。
当增量读取数据库查询结果中的行时,类似 Iterable (ResultSet) 对象是典型的。还可以想象,数据集本质上可以是信息流,例如日志数据、事务或网络爬虫发现的增量发现的页面。
| 归档时间: |
|
| 查看次数: |
6430 次 |
| 最近记录: |