为什么我的数据集类给出了索引超出范围的错误(Pytorch)?

uurity8g  于 2023-03-18  发布在  其他
关注(0)|答案(1)|浏览(143)

我正在确定为什么我的数据集给出IndexError: list index out of range错误。
考虑以下 Torch 数据集:

class MyDataset(Dataset):

def __init__(self, imgs , transform = None):
    self.imgs = imgs
    self.transform = transform or transforms.ToTensor()
    self.class_to_idx = {}

def __getitem__(self, index):
    
    image_path = self.imgs[index]
    name = image_path.split('/D')[1]
    target = name.split('_')[0]
    
    image = Image.open(image_path)
    
    if self.transform is not None:
        image = self.transform(image)

    if target in class_to_idx : 
        target = [class_to_idx[target]]
    else : 
        class_to_idx[target] = (int(target)-1)
        target = [class_to_idx[target]]

    return image , target

def __len__(self):
    return len(self.imgs)

image_path示例:"Train/D01_I_flat_0009.jpg"数据集有35个类:第一天第三十五天
我想计算平均值和标准差,但得到了误差:第一节第一节第一节第一节第一次
当我测试数据集时,它工作正常:

efzxgjgh

efzxgjgh1#

我找到了错误的原因。这是一个奇怪的原因!在Train文件夹中除了.jpg文件没有任何其他文件。但是,我应用了以下更改:

train_files = glob.glob(train_dir + '/*')

train_files = glob.glob(train_dir + '/*.jpg')

问题解决了!
值得一提的是,我在Google Colab上没有遇到这个问题,而是在我的机器上使用Jupyter Notebook。

相关问题