{"id":5386,"date":"2024-03-14T02:46:29","date_gmt":"2024-03-14T02:46:29","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/how-to-perform-incremental-learning-of-models-in-pytorch\/"},"modified":"2025-08-01T14:26:09","modified_gmt":"2025-08-01T14:26:09","slug":"how-to-perform-incremental-learning-of-models-in-pytorch","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/how-to-perform-incremental-learning-of-models-in-pytorch\/","title":{"rendered":"PyTorch Incremental Learning Guide"},"content":{"rendered":"<p>Incremental learning in PyTorch can be achieved through the following steps:<\/p>\n<ol>\n<li>Load the pre-trained model: Begin by loading the pre-trained model and saving its parameters.<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><span class=\"hljs-keyword\">import<\/span> torch\r\n<span class=\"hljs-keyword\">import<\/span> torch.nn <span class=\"hljs-keyword\">as<\/span> nn\r\n\r\n<span class=\"hljs-comment\"># \u52a0\u8f7d\u5df2\u7ecf\u8bad\u7ec3\u597d\u7684\u6a21\u578b<\/span>\r\nmodel = nn.Sequential(\r\n    nn.Linear(<span class=\"hljs-number\">10<\/span>, <span class=\"hljs-number\">5<\/span>),\r\n    nn.ReLU(),\r\n    nn.Linear(<span class=\"hljs-number\">5<\/span>, <span class=\"hljs-number\">2<\/span>)\r\n)\r\n\r\n<span class=\"hljs-comment\"># \u52a0\u8f7d\u6a21\u578b\u53c2\u6570<\/span>\r\nmodel.load_state_dict(torch.load(<span class=\"hljs-string\">'pretrained_model.pth'<\/span>))\r\n<\/code><\/pre>\n<ol>\n<li>Freezing the model parameters: To maintain the previously trained model parameters unchanged, the parameters of the model need to be set as untrainable.<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><span class=\"hljs-keyword\">for<\/span> param <span class=\"hljs-keyword\">in<\/span> model.parameters():\r\n    param.requires_grad = <span class=\"hljs-literal\">False<\/span>\r\n<\/code><\/pre>\n<ol>\n<li>Define a new network layer: Define a new network layer based on the incremental learning tasks and add it to the model as needed.<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code>new_layer = nn.Linear(<span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">3<\/span>)\r\nmodel.add_module(<span class=\"hljs-string\">'new_layer'<\/span>, new_layer)\r\n<\/code><\/pre>\n<ol>\n<li>Set the trainable parameters for the new layer: designate the parameters of the newly added network layer as trainable.<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><span class=\"hljs-keyword\">for<\/span> param <span class=\"hljs-keyword\">in<\/span> model.new_layer.parameters():\r\n    param.requires_grad = <span class=\"hljs-literal\">True<\/span>\r\n<\/code><\/pre>\n<ol>\n<li>Define loss function and optimizer: Define a new loss function and optimizer.<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code>criterion = nn.CrossEntropyLoss()\r\noptimizer = torch.optim.SGD(model.new_layer.parameters(), lr=<span class=\"hljs-number\">0.001<\/span>)\r\n<\/code><\/pre>\n<ol>\n<li>Incremental learning: utilizing new data for incremental learning.<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><span class=\"hljs-comment\"># \u8bad\u7ec3\u6a21\u578b<\/span>\r\n<span class=\"hljs-keyword\">for<\/span> epoch <span class=\"hljs-keyword\">in<\/span> <span class=\"hljs-built_in\">range<\/span>(num_epochs):\r\n    <span class=\"hljs-keyword\">for<\/span> inputs, labels <span class=\"hljs-keyword\">in<\/span> dataloader:\r\n        inputs, labels = inputs.to(device), labels.to(device)\r\n        \r\n        <span class=\"hljs-comment\"># \u524d\u5411\u4f20\u64ad<\/span>\r\n        outputs = model(inputs)\r\n        loss = criterion(outputs, labels)\r\n        \r\n        <span class=\"hljs-comment\"># \u53cd\u5411\u4f20\u64ad\u548c\u4f18\u5316<\/span>\r\n        optimizer.zero_grad()\r\n        loss.backward()\r\n        optimizer.step()\r\n<\/code><\/pre>\n<p>By following the steps above, it is possible to achieve the process of incremental learning in PyTorch. During the incremental learning process, you can add new network layers, define new loss functions and optimizers according to your needs, and train and optimize with new data.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Incremental learning in PyTorch can be achieved through the following steps: Load the pre-trained model: Begin by loading the pre-trained model and saving its parameters. import torch import torch.nn as nn # \u52a0\u8f7d\u5df2\u7ecf\u8bad\u7ec3\u597d\u7684\u6a21\u578b model = nn.Sequential( nn.Linear(10, 5), nn.ReLU(), nn.Linear(5, 2) ) # \u52a0\u8f7d\u6a21\u578b\u53c2\u6570 model.load_state_dict(torch.load(&#8216;pretrained_model.pth&#8217;)) Freezing the model parameters: To maintain the previously trained model [&hellip;]<\/p>\n","protected":false},"author":12,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[960,5826,75,1268,1239],"class_list":["post-5386","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-deep-learning","tag-incremental-learning","tag-machine-learning","tag-model-training","tag-pytorch"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>PyTorch Incremental Learning Guide - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"Master PyTorch incremental learning: load pre-trained models, freeze parameters, and update efficiently. Step-by-step tutorial.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/blog\/how-to-perform-incremental-learning-of-models-in-pytorch\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PyTorch Incremental Learning Guide\" \/>\n<meta property=\"og:description\" content=\"Master PyTorch incremental learning: load pre-trained models, freeze parameters, and update efficiently. Step-by-step tutorial.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/how-to-perform-incremental-learning-of-models-in-pytorch\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-14T02:46:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-01T14:26:09+00:00\" \/>\n<meta name=\"author\" content=\"Liam\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:site\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Liam\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-perform-incremental-learning-of-models-in-pytorch\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-perform-incremental-learning-of-models-in-pytorch\/\"},\"author\":{\"name\":\"Liam\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/23786905eb7b377f45ddb01c17da7671\"},\"headline\":\"PyTorch Incremental Learning Guide\",\"datePublished\":\"2024-03-14T02:46:29+00:00\",\"dateModified\":\"2025-08-01T14:26:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-perform-incremental-learning-of-models-in-pytorch\/\"},\"wordCount\":160,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"keywords\":[\"Deep Learning\",\"Incremental Learning\",\"machine learning\",\"Model Training\",\"PyTorch\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-perform-incremental-learning-of-models-in-pytorch\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/how-to-perform-incremental-learning-of-models-in-pytorch\/\",\"name\":\"PyTorch Incremental Learning Guide - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-14T02:46:29+00:00\",\"dateModified\":\"2025-08-01T14:26:09+00:00\",\"description\":\"Master PyTorch incremental learning: load pre-trained models, freeze parameters, and update efficiently. Step-by-step tutorial.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-perform-incremental-learning-of-models-in-pytorch\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/how-to-perform-incremental-learning-of-models-in-pytorch\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-perform-incremental-learning-of-models-in-pytorch\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PyTorch Incremental Learning Guide\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"name\":\"Silicon Cloud Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\",\"name\":\"Silicon Cloud Blog\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"contentUrl\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"width\":1024,\"height\":1024,\"caption\":\"Silicon Cloud Blog\"},\"image\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\",\"https:\/\/twitter.com\/SiliCloudGlobal\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/23786905eb7b377f45ddb01c17da7671\",\"name\":\"Liam\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8d37ed3e7f770dde8bf069ba0b4298688028c3abaacf1131742fc1352d174ebd?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8d37ed3e7f770dde8bf069ba0b4298688028c3abaacf1131742fc1352d174ebd?s=96&d=mm&r=g\",\"caption\":\"Liam\"},\"sameAs\":[\"http:\/\/Wilson\"],\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/liamwilson\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"PyTorch Incremental Learning Guide - Blog - Silicon Cloud","description":"Master PyTorch incremental learning: load pre-trained models, freeze parameters, and update efficiently. Step-by-step tutorial.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/blog\/how-to-perform-incremental-learning-of-models-in-pytorch\/","og_locale":"en_US","og_type":"article","og_title":"PyTorch Incremental Learning Guide","og_description":"Master PyTorch incremental learning: load pre-trained models, freeze parameters, and update efficiently. Step-by-step tutorial.","og_url":"https:\/\/www.silicloud.com\/blog\/how-to-perform-incremental-learning-of-models-in-pytorch\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-14T02:46:29+00:00","article_modified_time":"2025-08-01T14:26:09+00:00","author":"Liam","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Liam","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/how-to-perform-incremental-learning-of-models-in-pytorch\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-perform-incremental-learning-of-models-in-pytorch\/"},"author":{"name":"Liam","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/23786905eb7b377f45ddb01c17da7671"},"headline":"PyTorch Incremental Learning Guide","datePublished":"2024-03-14T02:46:29+00:00","dateModified":"2025-08-01T14:26:09+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-perform-incremental-learning-of-models-in-pytorch\/"},"wordCount":160,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"keywords":["Deep Learning","Incremental Learning","machine learning","Model Training","PyTorch"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/how-to-perform-incremental-learning-of-models-in-pytorch\/","url":"https:\/\/www.silicloud.com\/blog\/how-to-perform-incremental-learning-of-models-in-pytorch\/","name":"PyTorch Incremental Learning Guide - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-14T02:46:29+00:00","dateModified":"2025-08-01T14:26:09+00:00","description":"Master PyTorch incremental learning: load pre-trained models, freeze parameters, and update efficiently. Step-by-step tutorial.","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-perform-incremental-learning-of-models-in-pytorch\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/how-to-perform-incremental-learning-of-models-in-pytorch\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/how-to-perform-incremental-learning-of-models-in-pytorch\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"PyTorch Incremental Learning Guide"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/blog\/#website","url":"https:\/\/www.silicloud.com\/blog\/","name":"Silicon Cloud Blog","description":"","publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.silicloud.com\/blog\/#organization","name":"Silicon Cloud Blog","url":"https:\/\/www.silicloud.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","contentUrl":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","width":1024,"height":1024,"caption":"Silicon Cloud Blog"},"image":{"@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SiliCloudGlobal\/","https:\/\/twitter.com\/SiliCloudGlobal"]},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/23786905eb7b377f45ddb01c17da7671","name":"Liam","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/8d37ed3e7f770dde8bf069ba0b4298688028c3abaacf1131742fc1352d174ebd?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8d37ed3e7f770dde8bf069ba0b4298688028c3abaacf1131742fc1352d174ebd?s=96&d=mm&r=g","caption":"Liam"},"sameAs":["http:\/\/Wilson"],"url":"https:\/\/www.silicloud.com\/blog\/author\/liamwilson\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/5386","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=5386"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/5386\/revisions"}],"predecessor-version":[{"id":150133,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/5386\/revisions\/150133"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=5386"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=5386"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=5386"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}