Дело в том, что когда мой цикл обучения выполняется, само обучение происходит очень быстро, но программа тратит 95% времени на промежутки между эпохами — вероятно, загружая данные:
Я обучаю очень маленькую НС, используя набор данных HAM10000. Для загрузки данных я использую DataLoader, который поставляется с PyTorch: [code]class CocoDetectionWithFilenames(CocoDetection): def __init__(self, root: str, ann_file: str, transform=None): super().__init__(root, ann_file, transform)
return dataset, train_loader, valid_loader, test_loader [/code] Дело в том, что когда мой цикл обучения выполняется, само обучение происходит очень быстро, но программа тратит 95% времени на промежутки между эпохами — вероятно, загружая данные:[code]def extract_bboxes(targets: list[dict]) -> list[torch.Tensor]: bboxes = []
for target in targets: xs, ys, widths, heights = target["bbox"]
for idx, _ in enumerate(xs): x1, y1, width, height = xs[idx], ys[idx], widths[idx], heights[idx] # Convert COCO format (x, y, width, height) to (x1, y1, x2, y2) x2, y2 = x1 + width, y1 + height
bboxes.append(torch.IntTensor([x1, y1, x2, y2]))
return bboxes
num_epochs = 25 train_losses = [] val_losses = []
for epoch in range(num_epochs): model.train() running_loss = 0.0
for images, targets in train_loader_tqdm: images = images.to(device) bboxes = extract_bboxes(targets) bboxes = torch.stack(bboxes).to(device)
optimizer.zero_grad(set_to_none=True)
outputs = model(images) loss = criterion(outputs, bboxes)
train_losses.append(epoch_train_loss) print(f"Epoch {epoch + 1}, Loss: {epoch_train_loss}") model.eval() [/code] Как видите, код цикла обучения довольно прост, ничего странного в нем не происходит.
Скажем, у меня есть следующее:
class SomeClass:
def some_function(dataloader: DataLoader):
for idx, batch in enumerate(dataloader):
... do something with batch ...
Я хотел бы ввести DataLoader так, чтобы я мог показать через функцию...
Правильно ли я понимаю следующее? Когда петля обучения потребляет одну партию, соответствующий работник загружает следующую партию в свою очередь. В примере сопровождающего кода используются эти номера.
say, у меня есть num_workers = 4 ,...
Я прекрасно настраиваю модель сетчатки Resnet50 FPN V2 с использованием pytorch с retinanet_resnet50_fpn_v2_weights.default. Мой набор данных имеет около 13 050 образцов обучения, и я использую Google Colab с графическим процессором T4. Тем не...
Я построил глубокую нейронную сеть со слоями ConvLSTM1D, используя библиотеку Keras. Сеть не такая большая, но на обучение модели уходит слишком много времени.
Я хочу запустить код, связанный с федеративным обучением, но возникает эта ошибка
from data.dataloader import DataLoader as DL
ModuleNotFoundError: No module named 'data'
There is a data file in the code folder, why does this error occur when...