如何解决pytorch数据集地图样式与可迭代样式
Pytorch中的地图样式数据集具有__getitem__()
和__len__()
,而可迭代样式数据集具有__iter__()
协议。如果使用地图样式,则可以使用dataset[idx]
访问数据,这很好,但是使用可迭代的数据集则不能。
我的问题是为什么必须要区分?是什么使数据随机读取如此昂贵甚至不可行?
解决方法
整个数据集很可能不适合内存(可以在磁盘上,或者只能通过网络访问)。如果您不打算访问任意偏移量,则不必保留信息流。如果要通过网络请求数据[0],然后请求数据[1],然后请求数据[2],则您将发送很多请求,这些请求会引入延迟。
类似的可迭代(ResultSet)对象在增量读取数据库查询结果中的行时很典型。还可以想象,数据集本来可以是信息流,例如日志记录数据或事务,或者是Web爬网程序发现的增量发现的页面。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。