我使用ImageFolder从目录加载数据:

full_dataset = ImageFolder('some_dir', transform=transform)

当我打印它的长度时,它给出:32854.现在,我想将ImageFolder返回的Dataset分成使用torch.utils.data.random_split()的训练和测试数据集.我试着通过了分数[0.8, 0.2],长度是[len(full_dataset) - 100, 100].

train_dataset, test_dataset = torch.utils.data.random_split(full_dataset, [len(full_dataset) - 100, 100])

但是当我使用len(train_dataset.dataset.imgs)len(test_dataset.dataset.imgs)打印它们的长度时,它们显示的值与full_dataset相同.

为什么我的分手不起作用?

推荐答案

当您执行train_dataset.dataset(和类似的test_dataset.dataset)操作时,您引用的是原始数据集(在本例中为full_dataset).因此,train_dataset.dataset(和test_dataset.dataset)的imgs属性将提供属于原始数据集的所有图像,而不是每个拆分的图像.

由于random_split返回的Subset个对象具有__len__方法(从技术上讲,Subset是抽象类Dataset的子类),因此可以直接对每个拆分/子集使用len来获得它们的长度:

len(train_dataset)
len(test_dataset)

Python相关问答推荐

从多行文本中提取事件对

从Python调用GMP C函数时的分段错误和内存泄漏

仅对matplotlib的条标签中的一个条标签应用不同的格式

自定义新元未更新参数

Python无法在已导入的目录中看到新模块

数字梯度的意外值

将特定列信息移动到当前行下的新行

'discord.ext. commanders.cog没有属性监听器'

Python上的Instagram API:缺少client_id参数"

对整个 pyramid 进行分组与对 pyramid 列子集进行分组

如何避免Chained when/then分配中的Mypy不兼容类型警告?

如何使用html从excel中提取条件格式规则列表?

删除所有列值,但判断是否存在任何二元组

导入...从...混乱

将scipy. sparse矩阵直接保存为常规txt文件

基于行条件计算(pandas)

Flash只从html表单中获取一个值

Python—压缩叶 map html作为邮箱附件并通过sendgrid发送

OpenCV轮廓.很难找到给定图像的所需轮廓

python sklearn ValueError:使用序列设置数组元素