Bei Verwendung linux
des neuronalen Trainingsnetzwerks meldet der normale Trainingscode keine Fehler, aber beim Debuggen kann er nur zum Haltepunkt springen und später nicht ausgeführt werden, aber das ist in Ordnung. Ich bin schon zu oft darauf gestoßen. Warum? Wird das so windows
sein Problem auftritt? Heute habe ich dieses Problem endlich gelöst, notiere es. Wir können Multithreading während des Trainings verwenden. Im folgenden Code wissen wir, dass
Multithreading beim Training des Netzwerks nicht unterstützt wird. Wenn wir also das Training verwenden, sind unsere Thread-Einstellungen hier , das heißt, ob Sie debuggen oder ihn direkt ausführen ist ein Thread . Es unterstützt jedoch Multithreading. Normalerweise legen wir die Anzahl der Threads auf größer als fest . Beim Debuggen treten jedoch Probleme auf. Meine Debugging-Schnittstelle unterstützt nur den Hauptprozess und kann nach dem Öffnen des Threads nicht mehr verwendet werden.linux
num_workers=8
windows
windows
0
0
linux
1
Pycharm
train_data_loader = torch.utils.data.DataLoader(train_dataset,
batch_size=batch_size,
shuffle=True,
num_workers=8,
collate_fn=train_dataset.collate_fn,
drop_last=drop_last)
Die Lösung ist sehr einfach: Bei der direkten Ausführung müssen Sie sich keine Gedanken über die Anzahl der Threads machen, es reicht jedoch aus, diese beim Debuggen auf festzulegen 0
.
train_data_loader = torch.utils.data.DataLoader(train_dataset,
batch_size=batch_size,
shuffle=True,
num_workers=0,
collate_fn=train_dataset.collate_fn,