Diese Codebasis enthält die Implementierung von zwei kontinuierlichen Lernmethoden:
L2P ist eine neuartige kontinuierliche Lerntechnik, die lernt, ein vorgebildetes Modell dynamisch zu fordern, um Aufgaben unter verschiedenen Aufgabenübergängen nacheinander zu lernen. Unter anderem von der Mainstream-Probenbasis oder der architekturbasierten Methoden erfordert L2P weder einen Probenpuffer noch eine Aufgabenidentität für Testzeit. L2P kann auf verschiedene kontinuierliche Lerneinstellungen verallgemeinert werden, einschließlich der anspruchsvollsten und realistischsten Aufgaben-Agnostischen Umgebung. L2P übertrifft konsequent frühere Methoden auf dem neuesten Stand der Technik. Überraschenderweise erzielt L2P auch ohne Probenpuffer Wettbewerbsergebnisse gegen probenbasierte Methoden.


Code wird von Zifeng Wang geschrieben. Bestätigung für https://github.com/google-research/nestransformer.
Dies ist kein offiziell unterstütztes Google -Produkt.
Der Split ImageNet-R-Benchmark wird auf ImageNet-R aufgebaut, indem die 200 Klassen in 10 Aufgaben mit 20 Klassen pro Aufgabe unterteilt werden. Weitere Informationen finden Sie unter libml/input_pipeline.py. Wir glauben, dass der geteilte Imagnet-R aus den folgenden Gründen für die kontinuierliche Lerngemeinschaft von großer Bedeutung ist:
Die Codebasis wurde in Pytorch von Jaeho Lee in L2P-Pytorch und DualPrompt-Pytorch neu implementiert.
pip install -r requirements.txt
Danach müssen Sie möglicherweise Ihre JAX -Version entsprechend Ihrer CUDA -Treiberversion so anpassen, dass JAX Ihren GPUs korrekt identifiziert (weitere Informationen finden Sie in diesem Problem).
Hinweis: Die Codebasis wurde unter der TPU -Umgebung mit der neuesten JAX -Version durch die TPU -Umgebung getestet. Wir arbeiten derzeit daran, die GPU -Umgebung weiter zu überprüfen.
Bevor Experimente für 5-Datensätze und Core50 ausgeführt werden, sollte wie folgt ein zusätzlicher Schritt für Datensatzvorbereitungen durchgeführt werden:
"PATH_TO_CORE50" und "PATH_TO_NOT_MNIST" in libml/input_pipeline.py durch die Zielpfade in Schritt 2 Das in diesem Papier verwendete Vit-B/16-Modell kann hier heruntergeladen werden. Hinweis: Unsere Codebasis unterstützt tatsächlich verschiedene Größen von Vits. Wenn Sie Vits von Vits ausprobieren möchten, können Sie die config.model_name in den Konfigurationsdateien ändern, wobei die gültigen Optionen in Modellen/Vit.Py folgen.
Wir stellen die Konfigurationsdatei zum Trainieren und Bewerten von L2P und DualPrompt an mehreren Benchmarks in Konfigurationen.
Ausführen von L2P auf Benchmark -Datensätzen:
python main.py --my_config configs/$L2P_CONFIG --workdir=./l2p --my_config.init_checkpoint=<ViT-saved-path/ViT-B_16.npz>
wobei $L2P_CONFIG einer der Followers sein kann: [cifar100_l2p.py, five_datasets_l2p.py, core50_l2p.py, cifar100_gaussian_l2p.py] .
HINWEIS: Wir führen unsere Experimente mit 8 V100 GPUs oder 4 TPUs aus und geben in den Konfigurationsdateien eine Stapelgröße pro Geräte an. Dies zeigt an, dass wir eine Gesamtstapelgröße von 128 verwenden.
Um DualPrompt auf Benchmark -Datensätzen auszuführen:
python main.py --my_config configs/$DUALPROMPT_CONFIG --workdir=./dualprompt --my_config.init_checkpoint=<ViT-saved-path/ViT-B_16.npz>
wobei $DUALPROMPT_CONFIG einer der Folgen sein kann: [imr_dualprompt.py, cifar100_dualprompt.py] .
Wir verwenden Tensorboard, um das Ergebnis zu visualisieren. Wenn beispielsweise das zum Ausführen von L2P angegebene Arbeitsverzeichnis workdir=./cifar100_l2p ist, lautet der Befehl zum Überprüfen von Ergebnissen wie folgt:
tensorboard --logdir ./cifar100_l2p
Hier sind die wichtigen Metriken, die Sie im Auge behalten können, und ihre entsprechenden Bedeutungen:
| Metrisch | Beschreibung |
|---|---|
| Genauigkeit_N | Genauigkeit der N-Th-Aufgabe |
| Vergessen | Durchschnittliches Vergessen bis zur aktuellen Aufgabe |
| avg_acc | Durchschnittliche Bewertungsgenauigkeit bis zur aktuellen Aufgabe |
@inproceedings{wang2022learning,
title={Learning to prompt for continual learning},
author={Wang, Zifeng and Zhang, Zizhao and Lee, Chen-Yu and Zhang, Han and Sun, Ruoxi and Ren, Xiaoqi and Su, Guolong and Perot, Vincent and Dy, Jennifer and Pfister, Tomas},
booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
pages={139--149},
year={2022}
}
@article{wang2022dualprompt,
title={DualPrompt: Complementary Prompting for Rehearsal-free Continual Learning},
author={Wang, Zifeng and Zhang, Zizhao and Ebrahimi, Sayna and Sun, Ruoxi and Zhang, Han and Lee, Chen-Yu and Ren, Xiaoqi and Su, Guolong and Perot, Vincent and Dy, Jennifer and others},
journal={European Conference on Computer Vision},
year={2022}
}