Python 如何将标签链接到图片,并将其输入Pytorch的培训功能中?

Python 如何将标签链接到图片,并将其输入Pytorch的培训功能中?,python,deep-learning,pytorch,Python,Deep Learning,Pytorch,我正在尝试建立一个分类器,对手语手势图像进行分类。具有子文件夹的文件夹,如下所示 1) 训练 2) 验证 3) 试验 每个子文件夹都有名为A到I的文件夹。这些文件夹名称是这些文件夹中图片的标签 我真的不确定如何将这些标签链接到图片并将其输入模型中 大多数Pytorch在线文档使用内置数据集,对于这个领域的新手来说,很难理解幕后发生了什么。我读过关于数据加载器、数据集和ImageFolder的文章。我最近才开始深入学习,在机器学习中,使用内置函数和pandas列分割数据很容易,而不像图片那样容易

我正在尝试建立一个分类器,对手语手势图像进行分类。具有子文件夹的文件夹,如下所示 1) 训练 2) 验证 3) 试验

每个子文件夹都有名为A到I的文件夹。这些文件夹名称是这些文件夹中图片的标签

我真的不确定如何将这些标签链接到图片并将其输入模型中

大多数Pytorch在线文档使用内置数据集,对于这个领域的新手来说,很难理解幕后发生了什么。我读过关于数据加载器、数据集和ImageFolder的文章。我最近才开始深入学习,在机器学习中,使用内置函数和pandas列分割数据很容易,而不像图片那样容易

我所能做的只是这两个功能,但不确定如何继续:

第一个功能是加载训练图片

    data_path = 'C:/Users/.../Train/'
    train_dataset = torchvision.datasets.ImageFolder(
        root=data_path,
        transform=torchvision.transforms.ToTensor()
    )
    train_loader = torch.utils.data.DataLoader(
        train_dataset,
        batch_size=10,
        num_workers=0,
        shuffle=True
    )
    return train_loader
第二个功能是从一个特定文件夹中的图片名称中提取标签,文件名具有uselessinfo_letter_uselessnumbers的约定

import os
data_path = r"C:\Users...\small_sample"
labels = []
for img_filename in os.listdir(data_path):
    if img_filename.endswith(".jpg"):
        useless1, letter, useless2 = img_filename.split('.')[0].split('_')
        labels.append(letter)
我希望创建一个train_loader,我想train_loader将具有图片的张量格式和标签

喂养

for i, data in enumerate(train_loader, 0):
            # Get the inputs
            inputs, labels = data
            labels = normalize_label(labels) # Convert labels to 0/1
            # Zero the parameter gradients
            optimizer.zero_grad()
            # Forward pass, backward pass, and optimize
            outputs = net(inputs)
            loss = criterion(outputs, labels.float())
            loss.backward()
            optimizer.step()

至于我,我喜欢为自己编写dataloader,因为定制我真正想要的数据加载过程很容易

这是我之前编写的一个数据加载器,用于将单独的
.npy
文件作为train/eval数据加载到内存中。


在这段代码中,我首先需要准备train/eval索引,我将把索引文件保存为
.npy
文件,并将它们加载到
\uuuu init\uuuuuu()
,然后,无论您在培训或评估中,都可以对
\uuu getitem\uuuuuuu
方法进行相同的处理,因为您已经创建了特定的索引。有关更多信息,请查看代码,希望您最终能找到。

您可以查看PyTorch的ImageFolder。它使用存储在单独文件夹中的每个类加载数据集。看看这个