TypeError:不可散列的类型:调用 .iloc() 时的“列表”

Omn*_*Owl 4 python python-3.x pytorch

我目前正在为一个项目进行一些人工智能研究,为此我必须习惯一个名为“Pytorch”的框架。这很好,但按照官方教程(在此处找到),代码无法正常运行。

我的想法是,我从准备好的数据集中分析一组面部特征,然后用它做一些事情(还没有到达那部分)。但是当我运行这段代码时:

img_name = os.path.join(self.root_dir, self.landmarks_frame.iloc([index, 0]))  # At this point 'index' is 0
Run Code Online (Sandbox Code Playgroud)

数据集的初始化如下:

face_dataset = fDataset(csv_file='faces/face_landmarks.csv', root_dir='faces/')
Run Code Online (Sandbox Code Playgroud)

这是弹出错误的地方:

for i in range(len(face_dataset)):
    sample = face_dataset[i]  # <-- right there
Run Code Online (Sandbox Code Playgroud)

这就引出了 getter 函数:

def __getitem__(self, index):
    img_name = os.path.join(self.root_dir, self.landmarks_frame.iloc([index, 0]))
    image = io.imread(img_name)
    landmarks = self.landmarks_frame.iloc[index, 1:].as_matrix()
    landmarks = landmarks.astype('float').reshape(-1, 2)
    sample = {'image': image, 'landmarks': landmarks}
Run Code Online (Sandbox Code Playgroud)

在我的课堂上发现FaceLandmarksDataset(Dataset):我只是得到了标题的错误。我觉得这很奇怪,因为我可以在 PyCharm 中将数据集作为框架读取: 数据集检查器

第一张图片清晰可见。我还检查了它是否在我正在查找的文件夹中。

有人可以帮忙吗?:)

Mik*_*eyn 6

您不需要括号iloc

self.landmarks_frame.iloc[index, 0]
Run Code Online (Sandbox Code Playgroud)