Вы должны открыть для l oop столько элементов, сколько ваш набор данных возвращает на каждой итерации. Вот пример, иллюстрирующий мою точку зрения:
Рассмотрим следующий набор данных:
class CustomDataset:
def __getitem__(self, index):
...
return a, b, c
Обратите внимание, что он возвращает 3 элемента на каждой итерации.
Теперь давайте сделаем Загрузчик данных из этого:
from torch.utils.data import DataLoader
train_dataset = CustomDataset()
train_loader = DataLoader(train_dataset, batch_size=50, shuffle=True)
Теперь, когда мы используем train_loader
, мы должны открыть для l oop с 3 пунктами:
for i, (a_tensor, b_tensor, c_tensor) in enumerate(train_loader):
...
Внутри для l oop В контексте a_tensor
, b_tensor
, c_tensor
будут тензоры с 1-м измерением 50 (batch_size
).
Итак, исходя из приведенного вами примера, кажется, что любой набор данных Класс вашей get_train_test_loader
функции использует некоторые проблемы. Всегда лучше создать отдельный экземпляр набора данных, а затем создать загрузчик данных, а не использовать общую функцию, подобную той, которая у вас есть.