{"id":5349,"date":"2024-03-14T02:43:49","date_gmt":"2024-03-14T02:43:49","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/how-to-perform-unsupervised-learning-with-models-in-pytorch\/"},"modified":"2025-08-01T13:54:21","modified_gmt":"2025-08-01T13:54:21","slug":"how-to-perform-unsupervised-learning-with-models-in-pytorch","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/how-to-perform-unsupervised-learning-with-models-in-pytorch\/","title":{"rendered":"PyTorch Unsupervised Learning Guide"},"content":{"rendered":"<p>In PyTorch, performing unsupervised learning usually involves training a model such as an autoencoder or generative adversarial network (GAN). Here is a simple example showing how to train a basic autoencoder using PyTorch.<\/p>\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<span class=\"hljs-keyword\">import<\/span> torch.optim <span class=\"hljs-keyword\">as<\/span> optim\r\n<span class=\"hljs-keyword\">from<\/span> torch.utils.data <span class=\"hljs-keyword\">import<\/span> DataLoader\r\n<span class=\"hljs-keyword\">from<\/span> torchvision <span class=\"hljs-keyword\">import<\/span> datasets, transforms\r\n\r\n<span class=\"hljs-comment\"># \u5b9a\u4e49\u4e00\u4e2a\u7b80\u5355\u7684\u81ea\u7f16\u7801\u5668\u6a21\u578b<\/span>\r\n<span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title class_\">Autoencoder<\/span>(nn.Module):\r\n    <span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title function_\">__init__<\/span>(<span class=\"hljs-params\">self<\/span>):\r\n        <span class=\"hljs-built_in\">super<\/span>(Autoencoder, self).__init__()\r\n        self.encoder = nn.Sequential(\r\n            nn.Linear(<span class=\"hljs-number\">784<\/span>, <span class=\"hljs-number\">128<\/span>),\r\n            nn.ReLU(),\r\n            nn.Linear(<span class=\"hljs-number\">128<\/span>, <span class=\"hljs-number\">64<\/span>),\r\n            nn.ReLU()\r\n        )\r\n        \r\n        self.decoder = nn.Sequential(\r\n            nn.Linear(<span class=\"hljs-number\">64<\/span>, <span class=\"hljs-number\">128<\/span>),\r\n            nn.ReLU(),\r\n            nn.Linear(<span class=\"hljs-number\">128<\/span>, <span class=\"hljs-number\">784<\/span>),\r\n            nn.Sigmoid()\r\n        )\r\n    \r\n    <span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title function_\">forward<\/span>(<span class=\"hljs-params\">self, x<\/span>):\r\n        x = self.encoder(x)\r\n        x = self.decoder(x)\r\n        <span class=\"hljs-keyword\">return<\/span> x\r\n\r\n<span class=\"hljs-comment\"># \u52a0\u8f7dMNIST\u6570\u636e\u96c6<\/span>\r\ntransform = transforms.Compose([transforms.ToTensor()])\r\ntrain_dataset = datasets.MNIST(root=<span class=\"hljs-string\">'.\/data'<\/span>, train=<span class=\"hljs-literal\">True<\/span>, transform=transform, download=<span class=\"hljs-literal\">True<\/span>)\r\ntrain_loader = DataLoader(train_dataset, batch_size=<span class=\"hljs-number\">64<\/span>, shuffle=<span class=\"hljs-literal\">True<\/span>)\r\n\r\n<span class=\"hljs-comment\"># \u521d\u59cb\u5316\u6a21\u578b\u548c\u4f18\u5316\u5668<\/span>\r\nmodel = Autoencoder()\r\ncriterion = nn.MSELoss()\r\noptimizer = optim.Adam(model.parameters(), lr=<span class=\"hljs-number\">0.001<\/span>)\r\n\r\n<span class=\"hljs-comment\"># \u8bad\u7ec3\u6a21\u578b<\/span>\r\nnum_epochs = <span class=\"hljs-number\">10<\/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> data <span class=\"hljs-keyword\">in<\/span> train_loader:\r\n        img, _ = data\r\n        img = img.view(img.size(<span class=\"hljs-number\">0<\/span>), -<span class=\"hljs-number\">1<\/span>)\r\n        \r\n        optimizer.zero_grad()\r\n        recon = model(img)\r\n        loss = criterion(recon, img)\r\n        loss.backward()\r\n        optimizer.step()\r\n    \r\n    <span class=\"hljs-built_in\">print<\/span>(<span class=\"hljs-string\">f'Epoch [<span class=\"hljs-subst\">{epoch+<span class=\"hljs-number\">1<\/span>}<\/span>\/<span class=\"hljs-subst\">{num_epochs}<\/span>], Loss: <span class=\"hljs-subst\">{loss.item()}<\/span>'<\/span>)\r\n\r\n<span class=\"hljs-comment\"># \u4f7f\u7528\u8bad\u7ec3\u597d\u7684\u6a21\u578b\u91cd\u5efa\u8f93\u5165\u56fe\u50cf<\/span>\r\ntest_img, _ = <span class=\"hljs-built_in\">next<\/span>(<span class=\"hljs-built_in\">iter<\/span>(train_loader))\r\ntest_img = test_img.view(test_img.size(<span class=\"hljs-number\">0<\/span>), -<span class=\"hljs-number\">1<\/span>)\r\noutput_img = model(test_img)\r\n<\/code><\/pre>\n<p>In the above example, we first defined a simple autoencoder model, then loaded the MNIST dataset and initialized the model and optimizer. Next, we trained the model and output the loss value for each epoch. Finally, we reconstructed input images using the trained model. You can adjust the model structure and hyperparameters according to your needs and dataset to achieve better unsupervised learning results.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In PyTorch, performing unsupervised learning usually involves training a model such as an autoencoder or generative adversarial network (GAN). Here is a simple example showing how to train a basic autoencoder using PyTorch. import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader from torchvision import datasets, transforms # \u5b9a\u4e49\u4e00\u4e2a\u7b80\u5355\u7684\u81ea\u7f16\u7801\u5668\u6a21\u578b class [&hellip;]<\/p>\n","protected":false},"author":8,"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":[2346,960,5758,1239,5803],"class_list":["post-5349","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-autoencoder","tag-deep-learning","tag-gan","tag-pytorch","tag-unsupervised-learning"],"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 Unsupervised Learning Guide - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"Learn to implement unsupervised learning in PyTorch with autoencoders &amp; GANs. Includes code examples and best practices.\" \/>\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-unsupervised-learning-with-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 Unsupervised Learning Guide\" \/>\n<meta property=\"og:description\" content=\"Learn to implement unsupervised learning in PyTorch with autoencoders &amp; GANs. Includes code examples and best practices.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/how-to-perform-unsupervised-learning-with-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:43:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-01T13:54:21+00:00\" \/>\n<meta name=\"author\" content=\"William Carter\" \/>\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=\"William Carter\" \/>\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-unsupervised-learning-with-models-in-pytorch\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-perform-unsupervised-learning-with-models-in-pytorch\/\"},\"author\":{\"name\":\"William Carter\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/f697031891aacefc4b681d139781d3c0\"},\"headline\":\"PyTorch Unsupervised Learning Guide\",\"datePublished\":\"2024-03-14T02:43:49+00:00\",\"dateModified\":\"2025-08-01T13:54:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-perform-unsupervised-learning-with-models-in-pytorch\/\"},\"wordCount\":101,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"keywords\":[\"autoencoder\",\"Deep Learning\",\"GAN\",\"PyTorch\",\"Unsupervised Learning\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-perform-unsupervised-learning-with-models-in-pytorch\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/how-to-perform-unsupervised-learning-with-models-in-pytorch\/\",\"name\":\"PyTorch Unsupervised Learning Guide - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-14T02:43:49+00:00\",\"dateModified\":\"2025-08-01T13:54:21+00:00\",\"description\":\"Learn to implement unsupervised learning in PyTorch with autoencoders & GANs. Includes code examples and best practices.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-perform-unsupervised-learning-with-models-in-pytorch\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/how-to-perform-unsupervised-learning-with-models-in-pytorch\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-perform-unsupervised-learning-with-models-in-pytorch\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PyTorch Unsupervised 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\/f697031891aacefc4b681d139781d3c0\",\"name\":\"William Carter\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1786698071dd8d74bec894b512f9e3c610c3a2a32985f67e688976cee3c8bbef?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1786698071dd8d74bec894b512f9e3c610c3a2a32985f67e688976cee3c8bbef?s=96&d=mm&r=g\",\"caption\":\"William Carter\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/williamcarter\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"PyTorch Unsupervised Learning Guide - Blog - Silicon Cloud","description":"Learn to implement unsupervised learning in PyTorch with autoencoders & GANs. Includes code examples and best practices.","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-unsupervised-learning-with-models-in-pytorch\/","og_locale":"en_US","og_type":"article","og_title":"PyTorch Unsupervised Learning Guide","og_description":"Learn to implement unsupervised learning in PyTorch with autoencoders & GANs. Includes code examples and best practices.","og_url":"https:\/\/www.silicloud.com\/blog\/how-to-perform-unsupervised-learning-with-models-in-pytorch\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-14T02:43:49+00:00","article_modified_time":"2025-08-01T13:54:21+00:00","author":"William Carter","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"William Carter","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/how-to-perform-unsupervised-learning-with-models-in-pytorch\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-perform-unsupervised-learning-with-models-in-pytorch\/"},"author":{"name":"William Carter","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/f697031891aacefc4b681d139781d3c0"},"headline":"PyTorch Unsupervised Learning Guide","datePublished":"2024-03-14T02:43:49+00:00","dateModified":"2025-08-01T13:54:21+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-perform-unsupervised-learning-with-models-in-pytorch\/"},"wordCount":101,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"keywords":["autoencoder","Deep Learning","GAN","PyTorch","Unsupervised Learning"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/how-to-perform-unsupervised-learning-with-models-in-pytorch\/","url":"https:\/\/www.silicloud.com\/blog\/how-to-perform-unsupervised-learning-with-models-in-pytorch\/","name":"PyTorch Unsupervised Learning Guide - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-14T02:43:49+00:00","dateModified":"2025-08-01T13:54:21+00:00","description":"Learn to implement unsupervised learning in PyTorch with autoencoders & GANs. Includes code examples and best practices.","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-perform-unsupervised-learning-with-models-in-pytorch\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/how-to-perform-unsupervised-learning-with-models-in-pytorch\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/how-to-perform-unsupervised-learning-with-models-in-pytorch\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"PyTorch Unsupervised 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\/f697031891aacefc4b681d139781d3c0","name":"William Carter","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/1786698071dd8d74bec894b512f9e3c610c3a2a32985f67e688976cee3c8bbef?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1786698071dd8d74bec894b512f9e3c610c3a2a32985f67e688976cee3c8bbef?s=96&d=mm&r=g","caption":"William Carter"},"url":"https:\/\/www.silicloud.com\/blog\/author\/williamcarter\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/5349","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\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=5349"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/5349\/revisions"}],"predecessor-version":[{"id":150094,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/5349\/revisions\/150094"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=5349"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=5349"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=5349"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}