{"id":36389,"date":"2024-11-01T09:48:06","date_gmt":"2024-11-01T09:48:06","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=36389"},"modified":"2024-11-01T11:00:07","modified_gmt":"2024-11-01T11:00:07","slug":"deep-learning-with-gan-using-pytorch-structured-data-and-unstructured-data","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/36389\/","title":{"rendered":"Deep Learning with GAN using PyTorch, Structured Data and Unstructured Data"},"content":{"rendered":"<p><body><\/p>\n<h2>1. Overview of GAN<\/h2>\n<p>GAN (Generative Adversarial Networks) is an innovative deep learning model proposed by Ian Goodfellow in 2014, operating by having a generator model and a discriminator model compete against each other during training. The basic components of GAN are the generator and the discriminator. The generator tries to create data that is similar to real data, while the discriminator determines whether the given data is real or generated. Through the competition between these two models, the generator increasingly produces data that resembles real data.<\/p>\n<h2>2. Key Components of GAN<\/h2>\n<h3>2.1 Generator<\/h3>\n<p>The generator is a neural network that takes a random noise vector as input and generates data similar to real data. This network typically uses either a multilayer perceptron or a convolutional neural network.<\/p>\n<h3>2.2 Discriminator<\/h3>\n<p>The discriminator is a neural network that judges whether the input data is real or generated. Its ability to effectively distinguish between fake data created by the generator and real data is crucial.<\/p>\n<h3>2.3 Loss Function<\/h3>\n<p>The loss function of GAN is divided into the loss of the generator and the loss of the discriminator. The goal of the generator is to deceive the discriminator, while the goal of the discriminator is to accurately distinguish the generated data.<\/p>\n<h2>3. Training Process of GAN<\/h2>\n<p>The training process of GAN is iterative and consists of the following steps:<\/p>\n<ol>\n<li>Generate fake data through the generator using real data and random noise.<\/li>\n<li>Input the fake data and real data into the discriminator.<\/li>\n<li>Calculate how well the discriminator distinguished between fake and real data and update the loss.<\/li>\n<li>Update the generator to deceive the discriminator.<\/li>\n<\/ol>\n<h2>4. Applications of GAN<\/h2>\n<p>GAN is used in various fields, including:<\/p>\n<ul>\n<li>Image generation<\/li>\n<li>Video generation<\/li>\n<li>Voice synthesis<\/li>\n<li>Text generation<\/li>\n<li>Data augmentation<\/li>\n<\/ul>\n<h2>5. Difference Between Structured Data and Unstructured Data<\/h2>\n<p>Structured data is organized in a format that can easily be represented in a relational database. On the other hand, unstructured data refers to data without a unique form or structure, such as text, images, and videos. GAN is primarily used for unstructured data but can also be utilized for structured data.<\/p>\n<h2>6. Example of GAN Implementation Using PyTorch<\/h2>\n<p>Below is a simple implementation example of GAN using PyTorch. In this example, we will generate handwritten digits using the MNIST dataset.<\/p>\n<h3>6.1 Setting Up the Environment<\/h3>\n<p>First, install and import the necessary libraries.<\/p>\n<pre><code>!pip install torch torchvision matplotlib<\/code><\/pre>\n<h3>6.2 Preparing the Dataset<\/h3>\n<p>Load the MNIST dataset and transform it to a tensor.<\/p>\n<pre><code>import torch\nimport torchvision\nimport torchvision.transforms as transforms\n\ntransform = transforms.Compose([\n    transforms.ToTensor(),\n    transforms.Normalize((0.5,), (0.5,)),\n])\n\ntrain_dataset = torchvision.datasets.MNIST(root='.\/data', train=True, download=True, transform=transform)\ntrain_loader = torch.utils.data.DataLoader(dataset=train_dataset, batch_size=64, shuffle=True)<\/code><\/pre>\n<h3>6.3 Model Definition<\/h3>\n<p>Define the generator and discriminator models.<\/p>\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), # 28x28 images like MNIST\n            nn.Tanh(),\n        )\n\n    def forward(self, x):\n        return self.model(x)\n\nclass Discriminator(nn.Module):\n    def __init__(self):\n        super(Discriminator, self).__init__()\n        self.model = nn.Sequential(\n            nn.Linear(784, 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, x):\n        return self.model(x)<\/code><\/pre>\n<h3>6.4 Setting Loss Function and Optimizer<\/h3>\n<p>Use BCELoss as the loss function and proceed with learning using the Adam optimizer.<\/p>\n<pre><code>criterion = nn.BCELoss()\ngenerator = Generator()\ndiscriminator = Discriminator()\n\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))<\/code><\/pre>\n<h3>6.5 Model Training<\/h3>\n<p>Perform model training. At the end of each epoch, generated samples can be checked.<\/p>\n<pre><code>import matplotlib.pyplot as plt\n\nnum_epochs = 100\nfor epoch in range(num_epochs):\n    for i, (real_images, _) in enumerate(train_loader):\n        batch_size = real_images.size(0)\n        \n        # Label generation\n        real_labels = torch.ones(batch_size, 1)\n        fake_labels = torch.zeros(batch_size, 1)\n\n        # Discriminator training\n        optimizer_D.zero_grad()\n        outputs = discriminator(real_images.view(batch_size, -1))\n        d_loss_real = criterion(outputs, real_labels)\n        d_loss_real.backward()\n\n        noise = torch.randn(batch_size, 100)\n        fake_images = generator(noise)\n        outputs = discriminator(fake_images.detach())\n        d_loss_fake = criterion(outputs, fake_labels)\n        d_loss_fake.backward()\n        optimizer_D.step()\n\n        # Generator training\n        optimizer_G.zero_grad()\n        outputs = discriminator(fake_images)\n        g_loss = criterion(outputs, real_labels)\n        g_loss.backward()\n        optimizer_G.step()\n\n    if (epoch+1) % 10 == 0:\n        print(f'Epoch [{epoch+1}\/{num_epochs}], d_loss: {d_loss_real.item() + d_loss_fake.item():.4f}, g_loss: {g_loss.item():.4f}')\n        # Check generated images\n        with torch.no_grad():\n            fake_images = generator(noise).view(-1, 1, 28, 28)\n            grid = torchvision.utils.make_grid(fake_images, nrow=8, normalize=True)\n            plt.imshow(grid.permute(1, 2, 0).numpy(), cmap='gray')\n            plt.show()<\/code><\/pre>\n<h3>6.6 Checking Results<\/h3>\n<p>As training progresses, the generator increasingly produces realistic handwritten digits, demonstrating the performance of GAN.<\/p>\n<h2>7. Conclusion<\/h2>\n<p>This article covered the overview of GAN, its components, training process, and implementation methods using PyTorch. GAN exhibits excellent performance in generating unstructured data and can be applied in various fields. With advancements in technology, the future possibilities are endless.<\/p>\n<h2>8. References<\/h2>\n<p>1. Ian Goodfellow et al., &#8220;Generative Adversarial Networks&#8221;, NeurIPS 2014.<\/p>\n<p>2. PyTorch Documentation &#8211; <a href=\"https:\/\/pytorch.org\/docs\/stable\/index.html\">https:\/\/pytorch.org\/docs\/stable\/index.html<\/a><\/p>\n<p>3. torchvision Documentation &#8211; <a href=\"https:\/\/pytorch.org\/vision\/stable\/index.html\">https:\/\/pytorch.org\/vision\/stable\/index.html<\/a><\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>1. Overview of GAN GAN (Generative Adversarial Networks) is an innovative deep learning model proposed by Ian Goodfellow in 2014, operating by having a generator model and a discriminator model compete against each other during training. The basic components of GAN are the generator and the discriminator. The generator tries to create data that is &hellip; <a href=\"https:\/\/atmokpo.com\/w\/36389\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Deep Learning with GAN using PyTorch, Structured Data and Unstructured Data&#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-36389","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>Deep Learning with GAN using PyTorch, Structured Data and Unstructured Data - \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\/36389\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Deep Learning with GAN using PyTorch, Structured Data and Unstructured Data - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"1. Overview of GAN GAN (Generative Adversarial Networks) is an innovative deep learning model proposed by Ian Goodfellow in 2014, operating by having a generator model and a discriminator model compete against each other during training. The basic components of GAN are the generator and the discriminator. The generator tries to create data that is &hellip; \ub354 \ubcf4\uae30 &quot;Deep Learning with GAN using PyTorch, Structured Data and Unstructured Data&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/36389\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:48:06+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\/36389\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/36389\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Deep Learning with GAN using PyTorch, Structured Data and Unstructured Data\",\"datePublished\":\"2024-11-01T09:48:06+00:00\",\"dateModified\":\"2024-11-01T11:00:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/36389\/\"},\"wordCount\":535,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"GAN deep learning course\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/36389\/\",\"url\":\"https:\/\/atmokpo.com\/w\/36389\/\",\"name\":\"Deep Learning with GAN using PyTorch, Structured Data and Unstructured Data - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:48:06+00:00\",\"dateModified\":\"2024-11-01T11:00:07+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/36389\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/36389\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/36389\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Deep Learning with GAN using PyTorch, Structured Data and Unstructured Data\"}]},{\"@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":"Deep Learning with GAN using PyTorch, Structured Data and Unstructured Data - \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\/36389\/","og_locale":"ko_KR","og_type":"article","og_title":"Deep Learning with GAN using PyTorch, Structured Data and Unstructured Data - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"1. Overview of GAN GAN (Generative Adversarial Networks) is an innovative deep learning model proposed by Ian Goodfellow in 2014, operating by having a generator model and a discriminator model compete against each other during training. The basic components of GAN are the generator and the discriminator. The generator tries to create data that is &hellip; \ub354 \ubcf4\uae30 \"Deep Learning with GAN using PyTorch, Structured Data and Unstructured Data\"","og_url":"https:\/\/atmokpo.com\/w\/36389\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:48:06+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\/36389\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/36389\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Deep Learning with GAN using PyTorch, Structured Data and Unstructured Data","datePublished":"2024-11-01T09:48:06+00:00","dateModified":"2024-11-01T11:00:07+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/36389\/"},"wordCount":535,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["GAN deep learning course"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/36389\/","url":"https:\/\/atmokpo.com\/w\/36389\/","name":"Deep Learning with GAN using PyTorch, Structured Data and Unstructured Data - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:48:06+00:00","dateModified":"2024-11-01T11:00:07+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/36389\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/36389\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/36389\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"Deep Learning with GAN using PyTorch, Structured Data and Unstructured Data"}]},{"@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\/36389","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=36389"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/36389\/revisions"}],"predecessor-version":[{"id":36390,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/36389\/revisions\/36390"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=36389"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=36389"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=36389"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}