{"id":36405,"date":"2024-11-01T09:48:14","date_gmt":"2024-11-01T09:48:14","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=36405"},"modified":"2024-11-01T11:00:02","modified_gmt":"2024-11-01T11:00:02","slug":"the-development-of-gan-deep-learning-using-pytorch-progress-over-the-last-5-years","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/36405\/","title":{"rendered":"The Development of GAN Deep Learning Using PyTorch: Progress Over the Last 5 Years"},"content":{"rendered":"<p><body><\/p>\n<p>In the world of deep learning, GANs (Generative Adversarial Networks) have emerged as one of the most innovative and fascinating research topics. First proposed by Ian Goodfellow in 2014, GANs enable powerful image generation models through a competitive relationship between a generator and a discriminator. In this article, we will explain the basic concepts of GANs, examine advancements over the past five years, and provide an example of GAN implementation using PyTorch.<\/p>\n<h2>1. Basic Concepts of GAN<\/h2>\n<p>GAN consists of a generator and a discriminator. The generator creates fake data, while the discriminator determines whether this data is real or fake. The two networks evolve competitively, allowing the generator to produce increasingly realistic data. The goals of GANs are as follows:<\/p>\n<ul>\n<li>The generator must produce fake data that mimics the distribution of real data.<\/li>\n<li>The discriminator must be able to distinguish between the generated data and real data.<\/li>\n<\/ul>\n<h3>1.1 Mathematical Foundation of GAN<\/h3>\n<p>The training process of GAN involves optimizing the two networks. The following loss function is used for this purpose:<\/p>\n<blockquote>\n<p>L(D, G) = E[log D(x)] + E[log(1 &#8211; D(G(z)))]<\/p>\n<\/blockquote>\n<p>Here, D is the discriminator, G is the generator, x is real data, and z is a random noise vector. The goal of GANs is for the two networks to enhance each other through a zero-sum game.<\/p>\n<h2>2. Recent Developments in GAN<\/h2>\n<p>In the past five years, GANs have undergone various modifications and improvements. Below are some of them:<\/p>\n<h3>2.1 DCGAN (Deep Convolutional GAN)<\/h3>\n<p>DCGAN improved the performance of GAN by utilizing CNNs (Convolutional Neural Networks). By introducing CNNs into the traditional GAN structure, it successfully generated high-quality images.<\/p>\n<h3>2.2 WGAN (Wasserstein GAN)<\/h3>\n<p>WGAN introduced the concept of Wasserstein distance to improve the training stability of GANs. WGAN converges faster and more stably than traditional GANs and can produce higher quality images.<\/p>\n<h3>2.3 CycleGAN<\/h3>\n<p>CycleGAN is used to solve image transformation problems. For example, it can be used for tasks such as transforming photographs into artistic styles. CycleGAN has the ability to learn without paired image sets.<\/p>\n<h3>2.4 StyleGAN<\/h3>\n<p>StyleGAN is a state-of-the-art GAN architecture for generating high-quality images. This model allows for style adjustments during the generation process, enabling the creation of images in various styles.<\/p>\n<h2>3. GAN Implementation Using PyTorch<\/h2>\n<p>Now, let&#8217;s implement a basic GAN using PyTorch. The following code is a simple example of a GAN that generates digit images using the MNIST dataset.<\/p>\n<h3>3.1 Import Libraries<\/h3>\n<pre><code>import torch\nimport torch.nn as nn\nimport torch.optim as optim\nimport torchvision.transforms as transforms\nimport torchvision.datasets as datasets\nimport matplotlib.pyplot as plt\nimport numpy as np\n    <\/code><\/pre>\n<h3>3.2 Load Dataset<\/h3>\n<p>Load the MNIST dataset and perform transformations.<\/p>\n<pre><code># Load and transform MNIST dataset\ntransform = transforms.Compose([\n    transforms.ToTensor(),\n    transforms.Normalize((0.5,), (0.5,))\n])\n\nmnist = datasets.MNIST(root='.\/data', train=True, download=True, transform=transform)\ndataloader = torch.utils.data.DataLoader(mnist, batch_size=64, shuffle=True)\n    <\/code><\/pre>\n<h3>3.3 Define Generator and Discriminator Models<\/h3>\n<p>Define the models for the generator and discriminator.<\/p>\n<pre><code># Define generator model\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(True),\n            nn.Linear(256, 512),\n            nn.ReLU(True),\n            nn.Linear(512, 1024),\n            nn.ReLU(True),\n            nn.Linear(1024, 784),\n            nn.Tanh(),\n        )\n\n    def forward(self, z):\n        return self.model(z)\n\n# Define discriminator model\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, inplace=True),\n            nn.Linear(1024, 512),\n            nn.LeakyReLU(0.2, inplace=True),\n            nn.Linear(512, 256),\n            nn.LeakyReLU(0.2, inplace=True),\n            nn.Linear(256, 1),\n            nn.Sigmoid(),\n        )\n\n    def forward(self, img):\n        return self.model(img.view(img.size(0), -1))\n    <\/code><\/pre>\n<h3>3.4 Define Loss Function and Optimizers<\/h3>\n<p>Define the loss function and optimizers for training the GAN.<\/p>\n<pre><code>criterion = nn.BCELoss()\ngenerator = Generator()\ndiscriminator = Discriminator()\n\noptimizer_G = optim.Adam(generator.parameters(), lr=0.0002, betas=(0.5, 0.999))\noptimizer_D = optim.Adam(discriminator.parameters(), lr=0.0002, betas=(0.5, 0.999))\n    <\/code><\/pre>\n<h3>3.5 GAN Training Process<\/h3>\n<p>Now, let&#8217;s define a function for training the GAN.<\/p>\n<pre><code>def train_gan(num_epochs=50):\n    G_losses = []\n    D_losses = []\n    for epoch in range(num_epochs):\n        for i, (imgs, _) in enumerate(dataloader):\n            # Real image labels are 1, fake image labels are 0\n            real_labels = torch.ones(imgs.size(0), 1)\n            fake_labels = torch.zeros(imgs.size(0), 1)\n\n            # Train 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            z = torch.randn(imgs.size(0), 100)\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            optimizer_D.step()\n\n            # Train 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            G_losses.append(G_loss.item())\n            D_losses.append(D_loss_real.item() + D_loss_fake.item())\n\n        print(f'Epoch [{epoch}\/{num_epochs}], D_loss: {D_loss_fake.item() + D_loss_real.item()}, G_loss: {G_loss.item()}')\n    \n    return G_losses, D_losses\n    <\/code><\/pre>\n<h3>3.6 Execute Training and Visualize Results<\/h3>\n<p>Run the training and visualize the loss values.<\/p>\n<pre><code>G_losses, D_losses = train_gan(num_epochs=50)\n\nplt.plot(G_losses, label='Generator Loss')\nplt.plot(D_losses, label='Discriminator Loss')\nplt.title('Losses during Training')\nplt.xlabel('Iterations')\nplt.ylabel('Loss')\nplt.legend()\nplt.show()\n    <\/code><\/pre>\n<h2>4. Conclusion<\/h2>\n<p>In this article, we explored the basic concepts of GANs and recent advancements over the past five years, as well as demonstrating an implementation of GAN using PyTorch. GANs continue to evolve and hold a significant place in the field of deep learning. Future research directions are expected to focus on developing more stable training methods and generating high-resolution images.<\/p>\n<h2>5. References<\/h2>\n<ul>\n<li>Goodfellow, I., et al. (2014). Generative Adversarial Nets. <em>Advances in Neural Information Processing Systems<\/em>.<\/li>\n<li>Brock, A., Donahue, J., &amp; Simonyan, K. (2019). Large Scale GAN Training for High Fidelity Natural Image Synthesis. <em>International Conference on Learning Representations<\/em>.<\/li>\n<li>Karras, T., Laine, S., &amp; Aila, T. (2019). A Style-Based Generator Architecture for Generative Adversarial Networks. <em>IEEE\/CVF Conference on Computer Vision and Pattern Recognition<\/em>.<\/li>\n<li>CycleGAN: Unpaired Image-to-Image Translation using Cycle Consistent Adversarial Networks. <em>IEEE International Conference on Computer Vision (ICCV)<\/em>.<\/li>\n<\/ul>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the world of deep learning, GANs (Generative Adversarial Networks) have emerged as one of the most innovative and fascinating research topics. First proposed by Ian Goodfellow in 2014, GANs enable powerful image generation models through a competitive relationship between a generator and a discriminator. In this article, we will explain the basic concepts of &hellip; <a href=\"https:\/\/atmokpo.com\/w\/36405\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;The Development of GAN Deep Learning Using PyTorch: Progress Over the Last 5 Years&#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-36405","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>The Development of GAN Deep Learning Using PyTorch: Progress Over the Last 5 Years - \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\/36405\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"The Development of GAN Deep Learning Using PyTorch: Progress Over the Last 5 Years - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"In the world of deep learning, GANs (Generative Adversarial Networks) have emerged as one of the most innovative and fascinating research topics. First proposed by Ian Goodfellow in 2014, GANs enable powerful image generation models through a competitive relationship between a generator and a discriminator. In this article, we will explain the basic concepts of &hellip; \ub354 \ubcf4\uae30 &quot;The Development of GAN Deep Learning Using PyTorch: Progress Over the Last 5 Years&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/36405\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:48:14+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:00:02+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=\"5\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/atmokpo.com\/w\/36405\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/36405\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"The Development of GAN Deep Learning Using PyTorch: Progress Over the Last 5 Years\",\"datePublished\":\"2024-11-01T09:48:14+00:00\",\"dateModified\":\"2024-11-01T11:00:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/36405\/\"},\"wordCount\":610,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"GAN deep learning course\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/36405\/\",\"url\":\"https:\/\/atmokpo.com\/w\/36405\/\",\"name\":\"The Development of GAN Deep Learning Using PyTorch: Progress Over the Last 5 Years - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:48:14+00:00\",\"dateModified\":\"2024-11-01T11:00:02+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/36405\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/36405\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/36405\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"The Development of GAN Deep Learning Using PyTorch: Progress Over the Last 5 Years\"}]},{\"@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":"The Development of GAN Deep Learning Using PyTorch: Progress Over the Last 5 Years - \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\/36405\/","og_locale":"ko_KR","og_type":"article","og_title":"The Development of GAN Deep Learning Using PyTorch: Progress Over the Last 5 Years - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"In the world of deep learning, GANs (Generative Adversarial Networks) have emerged as one of the most innovative and fascinating research topics. First proposed by Ian Goodfellow in 2014, GANs enable powerful image generation models through a competitive relationship between a generator and a discriminator. In this article, we will explain the basic concepts of &hellip; \ub354 \ubcf4\uae30 \"The Development of GAN Deep Learning Using PyTorch: Progress Over the Last 5 Years\"","og_url":"https:\/\/atmokpo.com\/w\/36405\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:48:14+00:00","article_modified_time":"2024-11-01T11:00:02+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":"5\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/atmokpo.com\/w\/36405\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/36405\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"The Development of GAN Deep Learning Using PyTorch: Progress Over the Last 5 Years","datePublished":"2024-11-01T09:48:14+00:00","dateModified":"2024-11-01T11:00:02+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/36405\/"},"wordCount":610,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["GAN deep learning course"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/36405\/","url":"https:\/\/atmokpo.com\/w\/36405\/","name":"The Development of GAN Deep Learning Using PyTorch: Progress Over the Last 5 Years - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:48:14+00:00","dateModified":"2024-11-01T11:00:02+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/36405\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/36405\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/36405\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"The Development of GAN Deep Learning Using PyTorch: Progress Over the Last 5 Years"}]},{"@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\/36405","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=36405"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/36405\/revisions"}],"predecessor-version":[{"id":36406,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/36405\/revisions\/36406"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=36405"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=36405"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=36405"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}