Pytorch使用torch.utils.data.random_split拆分数据集,拆分后的数据集状况

对于这个API,我最开始的预想是从 '猫1猫2猫3猫4狗1狗2狗3狗4' 中分割出 '猫1猫2狗4狗1' 和 '猫4猫3狗2狗3' ,但是打印结果和我预想的不一样

数据集文件的存放路径如下图

测试代码如下

python 复制代码
import torch
import torchvision

transform = torchvision.transforms.Compose([
    torchvision.transforms.Resize((512,512)),  # 调整图像大小为 224x224
    torchvision.transforms.ToTensor(),  # 转换为张量
    torchvision.transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])  # 归一化
])
dataset = torchvision.datasets.ImageFolder('C:\\Users\\ASUS\\PycharmProjects\\pythonProject1\\cats_and_dogs_train',
                                                 transform=transform)

val_ratio = 0.2
val_size = int(len(dataset) * val_ratio)
train_size = len(dataset) - val_size
train_dataset, val_dataset = torch.utils.data.random_split(dataset, [train_size, val_size])


cats_num = 0
dogs_num = 0
for x,y in train_dataset:
    if y == 0:
        cats_num += 1
    else:
        dogs_num += 1

print("cats_num: ",cats_num)
print("dogs_num: ",dogs_num)

cats_num2 = 0
dogs_num2 = 0
for x,y in val_dataset:
    if y == 0:
        cats_num2 += 1
    else:
        dogs_num2 += 1

print("cats_num2: ",cats_num2)
print("dogs_num2: ",dogs_num2)

输出如下

可以看到总共25000张图片的数据集,分割后并不是cats_num:10000,dogs_num:10000,cats_num2:2500,dogs_num2:2500

也就是说,分割后的状况是猫狗的数量并不一定相等,如结果为 '猫1猫2猫4狗1' 和 '狗4猫3狗2狗3'

相关推荐
m0_6786933310 分钟前
深度学习笔记29-RNN实现阿尔茨海默病诊断(Pytorch)
笔记·rnn·深度学习
胡耀超22 分钟前
标签体系设计与管理:从理论基础到智能化实践的综合指南
人工智能·python·深度学习·数据挖掘·大模型·用户画像·语义分析
开-悟26 分钟前
嵌入式编程-使用AI查找BUG的启发
c语言·人工智能·嵌入式硬件·bug
Ailerx27 分钟前
YOLOv13震撼发布:超图增强引领目标检测新纪元
人工智能·yolo·目标检测
大咖分享课1 小时前
开源模型与商用模型协同开发机制设计
人工智能·开源·ai模型
博观而约取1 小时前
Django 数据迁移全解析:makemigrations & migrate 常见错误与解决方案
后端·python·django
你不知道我是谁?1 小时前
AI 应用于进攻性安全
人工智能·安全
reddingtons1 小时前
Adobe高阶技巧与设计师创意思维的进阶指南
人工智能·adobe·illustrator·设计师·photoshop·创意设计·aftereffects
机器之心1 小时前
刚刚,Grok4跑分曝光:「人类最后考试」拿下45%,是Gemini 2.5两倍,但网友不信
人工智能
熊猫钓鱼>_>2 小时前
用Python解锁图像处理之力:从基础到智能应用的深度探索
开发语言·图像处理·python