{"id":36387,"date":"2024-11-01T09:48:05","date_gmt":"2024-11-01T09:48:05","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=36387"},"modified":"2024-11-01T11:00:07","modified_gmt":"2024-11-01T11:00:07","slug":"pytorch-based-gan-deep-learning-encoder-decoder-model","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/36387\/","title":{"rendered":"PyTorch-based GAN Deep Learning, Encoder-Decoder Model"},"content":{"rendered":"<p><body><\/p>\n<p>Today, we will take a deep dive into the concepts of Generative Adversarial Networks (GAN) and Encoder-Decoder models. We will implement these two models using the PyTorch framework. GAN is a deep learning technique for generating data using two neural networks, while the Encoder-Decoder model is used to transform the structure of the data.<\/p>\n<h2>1. GAN (Generative Adversarial Networks)<\/h2>\n<p>GAN is a generative model proposed by Ian Goodfellow in 2014, primarily used for generation-related tasks. GAN consists of two main components: the Generator and the Discriminator. The Generator creates fake data, and the Discriminator determines whether the data is real or fake.<\/p>\n<h3>1.1 How GAN Works<\/h3>\n<p>The working principle of GAN can be summarized as follows:<\/p>\n<ol>\n<li>The Generator receives a random noise vector as input and generates fake data.<\/li>\n<li>The Discriminator compares the real data with the generated data to decide whether it&#8217;s real or fake.<\/li>\n<li>The Generator is continuously improved to fool the Discriminator.<\/li>\n<li>The Discriminator enhances its ability in response to the Generator&#8217;s improvements.<\/li>\n<\/ol>\n<h3>1.2 Mathematical Definition of GAN<\/h3>\n<p>The goal of GAN is to optimize the following two neural networks:<\/p>\n<pre><code>min_G max_D V(D, G) = E[log(D(x))] + E[log(1 - D(G(z)))].<\/code><\/pre>\n<p>Here, <code>D(x)<\/code> is the output of the Discriminator for real data, and <code>G(z)<\/code> is the fake data generated by the Generator.<\/p>\n<h2>2. Implementing GAN in PyTorch<\/h2>\n<h3>2.1 Setting Up the Environment<\/h3>\n<pre><code>!pip install torch torchvision<\/code><\/pre>\n<h3>2.2 Preparing the Dataset<\/h3>\n<p>We will use the MNIST dataset to generate handwritten digits.<\/p>\n<pre><code>import torch\nfrom torchvision import datasets, transforms\n\ntransform = transforms.Compose([\n    transforms.ToTensor(),\n    transforms.Normalize((0.5,), (0.5,))\n])\n\ntrain_dataset = datasets.MNIST(root='.\/data', train=True, transform=transform, download=True)\ntrain_loader = torch.utils.data.DataLoader(dataset=train_dataset, batch_size=64, shuffle=True)<\/code><\/pre>\n<h3>2.3 Defining the GAN Model<\/h3>\n<pre><code>import torch.nn as nn\n\nclass Generator(nn.Module):\n    def __init__(self):\n        super(Generator, self).__init__()\n        self.model = nn.Sequential(\n            nn.Linear(100, 256),\n            nn.ReLU(),\n            nn.Linear(256, 512),\n            nn.ReLU(),\n            nn.Linear(512, 1024),\n            nn.ReLU(),\n            nn.Linear(1024, 784),\n            nn.Tanh()  # Pixel values for MNIST range from -1 to 1\n        )\n\n    def forward(self, z):\n        return self.model(z)\n\nclass Discriminator(nn.Module):\n    def __init__(self):\n        super(Discriminator, self).__init__()\n        self.model = nn.Sequential(\n            nn.Linear(784, 1024),\n            nn.LeakyReLU(0.2),\n            nn.Linear(1024, 512),\n            nn.LeakyReLU(0.2),\n            nn.Linear(512, 256),\n            nn.LeakyReLU(0.2),\n            nn.Linear(256, 1),\n            nn.Sigmoid()\n        )\n\n    def forward(self, img):\n        return self.model(img)<\/code><\/pre>\n<h3>2.4 Implementing the Training Loop<\/h3>\n<pre><code>device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n\ngenerator = Generator().to(device)\ndiscriminator = Discriminator().to(device)\n\ncriterion = nn.BCELoss()\noptimizer_G = torch.optim.Adam(generator.parameters(), lr=0.0002, betas=(0.5, 0.999))\noptimizer_D = torch.optim.Adam(discriminator.parameters(), lr=0.0002, betas=(0.5, 0.999))\n\nfor epoch in range(50):\n    for i, (imgs, _) in enumerate(train_loader):\n        imgs = imgs.view(imgs.size(0), -1).to(device)\n        z = torch.randn(imgs.size(0), 100).to(device)\n\n        real_labels = torch.ones(imgs.size(0), 1).to(device)\n        fake_labels = torch.zeros(imgs.size(0), 1).to(device)\n\n        # Training the Discriminator\n        optimizer_D.zero_grad()\n        outputs = discriminator(imgs)\n        d_loss_real = criterion(outputs, real_labels)\n        d_loss_real.backward()\n\n        fake_imgs = generator(z)\n        outputs = discriminator(fake_imgs.detach())\n        d_loss_fake = criterion(outputs, fake_labels)\n        d_loss_fake.backward()\n\n        optimizer_D.step()\n\n        # Training the Generator\n        optimizer_G.zero_grad()\n        outputs = discriminator(fake_imgs)\n        g_loss = criterion(outputs, real_labels)\n        g_loss.backward()\n        optimizer_G.step()\n\n    print(f'Epoch [{epoch+1}\/50], d_loss: {d_loss_real.item() + d_loss_fake.item():.4f}, g_loss: {g_loss.item():.4f}')<\/code><\/pre>\n<h2>3. Encoder-Decoder Model<\/h2>\n<p>The Encoder-Decoder model consists of two neural network structures that compress the input data and reconstruct the original data based on the compressed data. This model is primarily used in tasks such as natural language processing (NLP) and image transformation.<\/p>\n<h3>3.1 Encoder-Decoder Structure<\/h3>\n<p>The Encoder converts the input data into a latent space, while the Decoder restores it back to the original data from the latent space. This structure is particularly useful in applications like machine translation and image captioning.<\/p>\n<h3>3.2 Model Implementation<\/h3>\n<pre><code>class Encoder(nn.Module):\n        def __init__(self):\n            super(Encoder, self).__init__()\n            self.model = nn.Sequential(\n                nn.Linear(784, 256),\n                nn.ReLU(),\n                nn.Linear(256, 64)\n            )\n\n        def forward(self, x):\n            return self.model(x)\n\n    class Decoder(nn.Module):\n        def __init__(self):\n            super(Decoder, self).__init__()\n            self.model = nn.Sequential(\n                nn.Linear(64, 256),\n                nn.ReLU(),\n                nn.Linear(256, 784),\n                nn.Sigmoid()\n            )\n\n        def forward(self, z):\n            return self.model(z)<\/code><\/pre>\n<h3>3.3 Training Loop<\/h3>\n<pre><code>encoder = Encoder().to(device)\ndecoder = Decoder().to(device)\n\noptimizer = torch.optim.Adam(list(encoder.parameters()) + list(decoder.parameters()), lr=0.001)\ncriterion = nn.BCELoss()\n\nfor epoch in range(50):\n    for imgs, _ in train_loader:\n        imgs = imgs.view(imgs.size(0), -1).to(device)\n        z = encoder(imgs)\n\n        optimizer.zero_grad()\n        reconstructed = decoder(z)\n        loss = criterion(reconstructed, imgs)\n        loss.backward()\n        optimizer.step()\n\n    print(f'Epoch [{epoch+1}\/50], Loss: {loss.item():.4f}') <\/code><\/pre>\n<h2>Conclusion<\/h2>\n<p>In this article, we explored detailed explanations of GAN and Encoder-Decoder models and how to implement them in PyTorch. We understood the structure and working principles of GANs, enabling us to perform image generation tasks. Additionally, we learned how to efficiently process input data using the Encoder-Decoder model. These models can be applied in various fields of deep learning and have great potential for future advancements.<\/p>\n<p>I hope this course helps readers deepen their understanding of advanced topics in deep learning.<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today, we will take a deep dive into the concepts of Generative Adversarial Networks (GAN) and Encoder-Decoder models. We will implement these two models using the PyTorch framework. GAN is a deep learning technique for generating data using two neural networks, while the Encoder-Decoder model is used to transform the structure of the data. 1. &hellip; <a href=\"https:\/\/atmokpo.com\/w\/36387\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;PyTorch-based GAN Deep Learning, Encoder-Decoder Model&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[113],"tags":[],"class_list":["post-36387","post","type-post","status-publish","format-standard","hentry","category-gan-deep-learning-course"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>PyTorch-based GAN Deep Learning, Encoder-Decoder Model - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/atmokpo.com\/w\/36387\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PyTorch-based GAN Deep Learning, Encoder-Decoder Model - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"Today, we will take a deep dive into the concepts of Generative Adversarial Networks (GAN) and Encoder-Decoder models. We will implement these two models using the PyTorch framework. GAN is a deep learning technique for generating data using two neural networks, while the Encoder-Decoder model is used to transform the structure of the data. 1. &hellip; \ub354 \ubcf4\uae30 &quot;PyTorch-based GAN Deep Learning, Encoder-Decoder Model&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/36387\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:48:05+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:00:07+00:00\" \/>\n<meta name=\"author\" content=\"root\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@bebubo4\" \/>\n<meta name=\"twitter:site\" content=\"@bebubo4\" \/>\n<meta name=\"twitter:label1\" content=\"\uae00\uc4f4\uc774\" \/>\n\t<meta name=\"twitter:data1\" content=\"root\" \/>\n\t<meta name=\"twitter:label2\" content=\"\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04\" \/>\n\t<meta name=\"twitter:data2\" content=\"4\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/atmokpo.com\/w\/36387\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/36387\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"PyTorch-based GAN Deep Learning, Encoder-Decoder Model\",\"datePublished\":\"2024-11-01T09:48:05+00:00\",\"dateModified\":\"2024-11-01T11:00:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/36387\/\"},\"wordCount\":402,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"GAN deep learning course\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/36387\/\",\"url\":\"https:\/\/atmokpo.com\/w\/36387\/\",\"name\":\"PyTorch-based GAN Deep Learning, Encoder-Decoder Model - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:48:05+00:00\",\"dateModified\":\"2024-11-01T11:00:07+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/36387\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/36387\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/36387\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PyTorch-based GAN Deep Learning, Encoder-Decoder Model\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/atmokpo.com\/w\/#website\",\"url\":\"https:\/\/atmokpo.com\/w\/\",\"name\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/atmokpo.com\/w\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\",\"name\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"url\":\"https:\/\/atmokpo.com\/w\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png\",\"contentUrl\":\"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png\",\"width\":400,\"height\":400,\"caption\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\"},\"image\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/bebubo4\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\",\"name\":\"root\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g\",\"caption\":\"root\"},\"sameAs\":[\"http:\/\/atmokpo.com\/w\"],\"url\":\"https:\/\/atmokpo.com\/w\/author\/root\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"PyTorch-based GAN Deep Learning, Encoder-Decoder Model - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","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:\/\/atmokpo.com\/w\/36387\/","og_locale":"ko_KR","og_type":"article","og_title":"PyTorch-based GAN Deep Learning, Encoder-Decoder Model - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"Today, we will take a deep dive into the concepts of Generative Adversarial Networks (GAN) and Encoder-Decoder models. We will implement these two models using the PyTorch framework. GAN is a deep learning technique for generating data using two neural networks, while the Encoder-Decoder model is used to transform the structure of the data. 1. &hellip; \ub354 \ubcf4\uae30 \"PyTorch-based GAN Deep Learning, Encoder-Decoder Model\"","og_url":"https:\/\/atmokpo.com\/w\/36387\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:48:05+00:00","article_modified_time":"2024-11-01T11:00:07+00:00","author":"root","twitter_card":"summary_large_image","twitter_creator":"@bebubo4","twitter_site":"@bebubo4","twitter_misc":{"\uae00\uc4f4\uc774":"root","\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04":"4\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/atmokpo.com\/w\/36387\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/36387\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"PyTorch-based GAN Deep Learning, Encoder-Decoder Model","datePublished":"2024-11-01T09:48:05+00:00","dateModified":"2024-11-01T11:00:07+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/36387\/"},"wordCount":402,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["GAN deep learning course"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/36387\/","url":"https:\/\/atmokpo.com\/w\/36387\/","name":"PyTorch-based GAN Deep Learning, Encoder-Decoder Model - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:48:05+00:00","dateModified":"2024-11-01T11:00:07+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/36387\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/36387\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/36387\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"PyTorch-based GAN Deep Learning, Encoder-Decoder Model"}]},{"@type":"WebSite","@id":"https:\/\/atmokpo.com\/w\/#website","url":"https:\/\/atmokpo.com\/w\/","name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","description":"","publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/atmokpo.com\/w\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/atmokpo.com\/w\/#organization","name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","url":"https:\/\/atmokpo.com\/w\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/","url":"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png","contentUrl":"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png","width":400,"height":400,"caption":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8"},"image":{"@id":"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/bebubo4"]},{"@type":"Person","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7","name":"root","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g","caption":"root"},"sameAs":["http:\/\/atmokpo.com\/w"],"url":"https:\/\/atmokpo.com\/w\/author\/root\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/36387","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/comments?post=36387"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/36387\/revisions"}],"predecessor-version":[{"id":36388,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/36387\/revisions\/36388"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=36387"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=36387"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=36387"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}