{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/packnet-adding-multiple-tasks-to-a-single","title":"PackNet: Adding Multiple Tasks to a Single Network by Iterative Pruning","arxiv_id":"1711.05769","date":"2017-11-15","proceeding":"CVPR 2018 6","authors":["Arun Mallya","Svetlana Lazebnik"],"abstract":"This paper presents a method for adding multiple tasks to a single deep\nneural network while avoiding catastrophic forgetting. Inspired by network\npruning techniques, we exploit redundancies in large deep networks to free up\nparameters that can then be employed to learn new tasks. By performing\niterative pruning and network re-training, we are able to sequentially \"pack\"\nmultiple tasks into a single network while ensuring minimal drop in performance\nand minimal storage overhead. Unlike prior work that uses proxy losses to\nmaintain accuracy on older tasks, we always optimize for the task at hand. We\nperform extensive experiments on a variety of network architectures and\nlarge-scale datasets, and observe much better robustness against catastrophic\nforgetting than prior work. In particular, we are able to add three\nfine-grained classification tasks to a single ImageNet-trained VGG-16 network\nand achieve accuracies close to those of separately trained networks for each\ntask. Code available at https://github.com/arunmallya/packnet","url_abs":"http://arxiv.org/abs/1711.05769v2","url_pdf":"http://arxiv.org/pdf/1711.05769v2.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"packnet-adding-multiple-tasks-to-a-single","repo_url":"https://github.com/arunmallya/packnet","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"packnet-adding-multiple-tasks-to-a-single","repo_url":"https://github.com/Lucasc-99/PackNet-Continual-Learning","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"packnet-adding-multiple-tasks-to-a-single","repo_url":"https://github.com/Lucasc-99/packnet_cl","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"packnet-adding-multiple-tasks-to-a-single","repo_url":"https://github.com/kamsyn95/CL_DNN","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"continual-learning","task_name":"Continual Learning"},{"task_slug":"network-pruning","task_name":"Network Pruning"}],"methods":[{"method_slug":"pruning","method_name":"Pruning"}],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/continual-learning-on-cubs-fine-grained-6","task":"Continual Learning","dataset":"CUBS (Fine-grained 6 Tasks)","model":"PackNet","rank_in_archive_order":5,"of":6,"metrics":{"Accuracy":"80.41"},"uses_additional_data":false},{"leaderboard":"/sota/continual-learning-on-cifar100-20-tasks","task":"Continual Learning","dataset":"Cifar100 (20 tasks)","model":"PackNet","rank_in_archive_order":9,"of":9,"metrics":{"Average Accuracy":"67.5"},"uses_additional_data":false},{"leaderboard":"/sota/continual-learning-on-flowers-fine-grained-6","task":"Continual Learning","dataset":"Flowers (Fine-grained 6 Tasks)","model":"PackNet","rank_in_archive_order":6,"of":6,"metrics":{"Accuracy":"93.04"},"uses_additional_data":false},{"leaderboard":"/sota/continual-learning-on-imagenet-fine-grained-6","task":"Continual Learning","dataset":"ImageNet (Fine-grained 6 Tasks)","model":"PackNet","rank_in_archive_order":5,"of":6,"metrics":{"Accuracy":"75.71"},"uses_additional_data":false},{"leaderboard":"/sota/continual-learning-on-sketch-fine-grained-6","task":"Continual Learning","dataset":"Sketch (Fine-grained 6 Tasks)","model":"PackNet","rank_in_archive_order":6,"of":6,"metrics":{"Accuracy":"76.17"},"uses_additional_data":false},{"leaderboard":"/sota/continual-learning-on-stanford-cars-fine","task":"Continual Learning","dataset":"Stanford Cars (Fine-grained 6 Tasks)","model":"PackNet","rank_in_archive_order":6,"of":6,"metrics":{"Accuracy":"86.11"},"uses_additional_data":false},{"leaderboard":"/sota/continual-learning-on-wikiart-fine-grained-6","task":"Continual Learning","dataset":"Wikiart (Fine-grained 6 Tasks)","model":"PackNet","rank_in_archive_order":6,"of":6,"metrics":{"Accuracy":"69.40"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1711.05769","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1711.05769"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/Lucasc-99/PackNet-Continual-Learning","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/arunmallya/packnet","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/Lucasc-99/packnet_cl","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/kamsyn95/CL_DNN","reach":null}],"summary":{"ran_violates":1},"by_repo_kind":{"official":{"samples":1,"ran":1,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":1,"samples":[{"code_sha256_prefix":"ee6fd5e70dcfe51c","entry":"distillation_loss","repo":"arunmallya/packnet","repo_kind":"official","path":"src/lwf.py","file_url":"https://github.com/arunmallya/packnet/blob/HEAD/src/lwf.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ee6fd5e70dcfe51c"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}