Python 3.x 类型错误:';元组';对象在创建数据生成器时不能解释为整数
我是PyTorch的新手,正在学习创建用于分段的批量数据。代码如下所示:Python 3.x 类型错误:';元组';对象在创建数据生成器时不能解释为整数,python-3.x,deep-learning,pytorch,data-generation,Python 3.x,Deep Learning,Pytorch,Data Generation,我是PyTorch的新手,正在学习创建用于分段的批量数据。代码如下所示: class NumbersDataset(Dataset): def __init__(self): self.X = list(df['input_img']) self.y = list(df['mask_img']) def __len__(self): return len(self.X), len(self.y) def __getite
class NumbersDataset(Dataset):
def __init__(self):
self.X = list(df['input_img'])
self.y = list(df['mask_img'])
def __len__(self):
return len(self.X), len(self.y)
def __getitem__(self, idx):
return self.X[idx], self.y[idx]
if __name__ == '__main__':
dataset = NumbersDataset()
dataloader = DataLoader(dataset, batch_size=50, shuffle=True, num_workers=2)
# print(len(dataset))
# plt.imshow(dataset[100])
# plt.show()
print(next(iter(dataloader)))
其中,df['input_img']
列包含图像的位置('/path/to/pic/480p/boxing fisheye/00010.jpg'
)和df['mask_img']
包含所有遮罩图像的位置。我正在尝试加载图像,但出现错误:
TypeError:“tuple”对象不能解释为整数
但是,如果我不使用DataLoader
,只需执行以下操作:
dataset = NumbersDataset()
print(len(dataset))
print(dataset[10:20])
然后我得到了我所期望的。有人能告诉我我做错了什么吗?您不能为
\uuu len\uu
方法返回元组。预期类型为int
# perhaps you can add the list length's for the total length
# but no matter how you choose to implement the method you can
# only return on value of type integer `int`
def __len__(self):
return len(self.X) + len(self.y)
如果我只返回self.X的长度会怎么样?行吗?我猜它只需要长度,这样它就可以遍历这些值。我知道一个事实,X
和y
的长度应该是相同的。这更多是一个由您决定的实现细节。错误是当数据加载器将其视为单个int
时,您试图返回两个值,如果不是,则返回失败。您能告诉我为什么没有数据加载器它可以工作吗?这有区别吗?因为DataLoader
要求长度属性的类型为int
的单个值。可能是因为它正在添加或使用\uuu len\uuu
中的值来进行一些计算。如果该值不是整数,则计算失败。例如,运行(1,2)+1
失败,因为您无法对类型元组执行数学运算。非常感谢。