#python #dataframe #pytorch #geometry
Вопрос:
Я определил класс
class Potsdam_Microgrid_DS1(Dataset): def __init__(self, root, transform=None, pre_transform=None): super().__init__(root, transform, pre_transform) #List all processed data def processed_file_names(self): return ['data_1.pt', 'data_2.pt', 'data_3.pt'] def len(self): return len(self.processed_file_names) def get(self, idx): data = torch.load(osp.join(self.processed_dir, 'data_{}.pt'.format(idx))) return data
Тогда беги
Dataset_path = 'C:\Users\SPSC\Documents\Potsdam IMGData\data' Data=Potsdam_Microgrid_DS1(Dataset_path) Data.len()
Результаты
TypeError Traceback (most recent call last) ~AppDataLocalTemp3/ipykernel_29288/1760764674.py in lt;modulegt; ----gt; 1 Data.len() ~AppDataLocalTemp3/ipykernel_29288/3878533142.py in len(self) 8 9 def len(self): ---gt; 10 return len(self.processed_file_names) 11 12 def get(self, idx): TypeError: object of type 'method' has no len()
Я понятия не имею, почему.
Комментарии:
1.
self.processed_file_names
это метод. Вам нужно позвонить ему, чтобы получить список, который он возвращает (т. Е.self.processed_file_names()
)2. Большое вам спасибо. Это решило проблему.
Ответ №1:
processed_file_names
это метод, поэтому
len(self.processed_file_names)
запрашивает длину метода. Вам нужно вызвать метод:
def len(self): return len(self.processed_file_names())
Комментарии:
1. Кроме того,
Data.len()
было бы либоData.__len__()
… либоlen(Data)
.2. Это решило мою проблему.