Меня немного смущает «лучшая практика» для реализации конвейера данных PyTorch для данных временных рядов.
У меня есть файл HD5, который я прочитал с помощью специального DataLoader. Кажется, что я должен вернуть образцы данных в виде кортежа (функций, целей) с формой каждого из них (L, C), где L - это seq_len, а C - количество каналов, т.е. не выполнять предварительную пакетную обработку в загрузчик данных, просто верните его в виде таблицы.
Модули PyTorch, похоже, требуют пакетного dim, т.е. Conv1D ожидает (N, C, L).
У меня создалось впечатление, что класс DataLoader
добавит размер пакета, но это не так, я получаю данные в форме (N, L).
dataset = HD5Dataset(args.dataset)
dataloader = DataLoader(dataset,
batch_size=N,
shuffle=True,
pin_memory=is_cuda,
num_workers=num_workers)
for i, (x, y) in enumerate(train_dataloader):
...
В приведенном выше коде x имеет вид (N, C), а не (1, N, C), что приводит к приведенному ниже коду (из publi c git репо) не удалось выполнить в первой строке.
def forward(self, x):
"""expected input shape is (N, L, C)"""
x = x.transpose(1, 2).contiguous() # input should have dimension (N, C, L)
В документации указано Когда разрешена автоматизация c пакетная обработка Он всегда добавляет новое измерение в качестве измерения пакета что наводит меня на мысль, что automati c пакетирование отключено , но я не понимаю почему?