- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Pytorch DataLoader 变长数据处理方式由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
关于Pytorch中怎么自定义Dataset数据集类、怎样使用DataLoader迭代加载数据,这篇官方文档已经说得很清楚了,这里就不在赘述.
现在的问题:有的时候,特别对于NLP任务来说,输入的数据可能不是定长的,比如多个句子的长度一般不会一致,这时候使用DataLoader加载数据时,不定长的句子会被胡乱切分,这肯定是不行的.
解决方法是重写DataLoader的collate_fn,具体方法如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
# 假如每一个样本为:
sample
=
{
# 一个句子中各个词的id
'token_list'
: [
5
,
2
,
4
,
1
,
9
,
8
],
# 结果y
'label'
:
5
,
}
# 重写collate_fn函数,其输入为一个batch的sample数据
def
collate_fn(batch):
# 因为token_list是一个变长的数据,所以需要用一个list来装这个batch的token_list
token_lists
=
[item[
'token_list'
]
for
item
in
batch]
# 每个label是一个int,我们把这个batch中的label也全取出来,重新组装
labels
=
[item[
'label'
]
for
item
in
batch]
# 把labels转换成Tensor
labels
=
torch.Tensor(labels)
return
{
'token_list'
: token_lists,
'label'
: labels,
}
# 在使用DataLoader加载数据时,注意collate_fn参数传入的是重写的函数
DataLoader(trainset, batch_size
=
4
, shuffle
=
True
, num_workers
=
4
, collate_fn
=
collate_fn)
|
使用以上方法,可以保证DataLoader能Load出一个batch的数据,load出来的东西就是重写的collate_fn函数最后return出来的字典.
以上这篇Pytorch DataLoader 变长数据处理方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我.
原文链接:https://blog.csdn.net/HappyCtest/article/details/88872651 。
最后此篇关于Pytorch DataLoader 变长数据处理方式的文章就讲到这里了,如果你想了解更多关于Pytorch DataLoader 变长数据处理方式的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我目前遇到以下情况,我想使用 DataLoader 批处理 numpy 数组: import numpy as np import torch import torch.utils.data as d
我现在正在使用 Pytorch 运行 Python 程序。我使用我自己的数据集,而不是 torch.data.dataset .我从从特征提取中提取的泡菜文件下载数据。但是出现以下错误: Traceb
问题 我有以下问题: 我想使用 pytorchs DataLoader(以类似于 here 的方式)但我的设置有点不同: 在我的数据文件夹中,我有不同街道情况的图像(让我们称它们为 image_tot
我已经通过这个 pytorch api 通过设置 download=True 下载了 ImageNet 数据集。但我无法遍历数据加载器。 错误说“'DataLoader' 对象不支持索引” train
我了解 dataLoader 如何使用简单的键工作: import DataLoader from 'dataloader'; import myService from './services/se
当遍历 PyTorch 数据加载器时,例如 # define dataset, dataloader train_data = datasets.ImageFolder(data_dir + '/tr
当遍历 PyTorch 数据加载器时,例如 # define dataset, dataloader train_data = datasets.ImageFolder(data_dir + '/tr
我正在使用 graphql 和 mongodb (mongoose) 构建一个快速 JS 应用程序。我正在使用 facebooks Dataloader 来批处理和缓存请求。 除了这个用例,它工作得很
查看 DataLoader library ,它是如何缓存和批处理请求的? 指令以下列方式指定用法: var DataLoader = require('dataloader') var userLo
shuffle = False时,不打乱数据顺序 shuffle = True,随机打乱 ?
关于Pytorch中怎么自定义Dataset数据集类、怎样使用DataLoader迭代加载数据,这篇官方文档已经说得很清楚了,这里就不在赘述。 现在的问题:有的时候,特别对于NLP任务来说,输入的
最近在学pytorch,在使用数据分批训练时在导入数据是使用了 DataLoader 在参数 num_workers的设置上使程序出现运行没有任何响应的结果 ,看看代码
有一个bug在 PyTorch/Numpy 中,当使用 DataLoader 并行加载批处理时(即设置 num_workers > 1),每个 worker 使用相同的 NumPy 随机种子,导致任何
我有以下错误。 Expected: /home/ubuntu/.pycharm_helpers/pydev/pydevd_attach_to_process/attach_linux_amd64.so
有一个bug在 PyTorch/Numpy 中,当与 DataLoader 并行加载批次时(即设置 num_workers > 1 ),每个 worker 使用相同的 NumPy 随机种子,导致应用的
我有一个 GraphQL api,使用传统的解析函数可以很好地工作。我的目标是消除 N+1 问题。 为此,我决定使用 Dataloader。我已经完成了这些步骤,据说可以让应用程序运行: 我将这两个函
当我创建一个 PyTorch DataLoader 并开始迭代时——我得到了一个非常慢的第一个纪元(x10--x30 比所有下一个纪元都慢)。此外,此问题仅出现在来自 Kaggle 的 Google
我有非常常见的 GraphQL 架构,如下所示(伪代码): Post { commentsPage(skip: Int, limit: Int) { total: Int item
有没有办法将DataLoader作为列表处理?我的想法是,我想对隐式图像对进行洗牌,而不将洗牌设置为 True 基本上,我有 10 个场景,每个场景包含 100 个序列,因此它们在目录中表示为 '1_
我需要用我训练的卷积神经网络的数据测试结果编写一个文件。数据包括语音数据采集。文件格式需要是“文件名,预测”,但我很难提取文件名。我这样加载数据: import torchvision from to
我是一名优秀的程序员,十分优秀!