{"id":36369,"date":"2024-11-01T09:47:53","date_gmt":"2024-11-01T09:47:53","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=36369"},"modified":"2024-11-01T11:00:12","modified_gmt":"2024-11-01T11:00:12","slug":"pytorch-based-gan-deep-learning-apples-and-oranges","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/36369\/","title":{"rendered":"PyTorch-based GAN Deep Learning, Apples and Oranges"},"content":{"rendered":"<p><body><\/p>\n<p>\n        Generative Adversarial Networks (GANs) are a type of generative model that generate data similar to real data through competition between two neural networks (generator and discriminator).<br \/>\n        In this article, we will explore how to generate images of apples and oranges using GANs. We will implement GAN using the PyTorch framework and provide Python code for practice.\n    <\/p>\n<h2>1. What is GAN?<\/h2>\n<p>\n        GAN is a model proposed by Ian Goodfellow in 2014, where two artificial neural network structures compete against each other to learn.<br \/>\n        This structure can be divided into the following two parts:\n    <\/p>\n<ul>\n<li><strong>Generator<\/strong>: It takes random noise as input and generates data similar to real data.<\/li>\n<li><strong>Discriminator<\/strong>: It determines whether the input data is real data or fake data generated by the generator.<\/li>\n<\/ul>\n<p>\n        The training process of GAN is as follows:\n    <\/p>\n<ol>\n<li> The generator generates data through random noise.\n<li> The discriminator compares the real data and the generated data to judge if it is real or fake.<\/li>\n<li> The generator is updated to create more realistic data based on the discriminator&#8217;s judgment.<\/li>\n<li> The discriminator is updated to distinguish between real and fake data more accurately.<\/li>\n<\/li.><\/ol>\n<h2>2. Preparing the Dataset<\/h2>\n<p>\n        To train the GAN, a dataset containing images of apples and oranges needs to be prepared. In this example, we will collect apple and orange data from Kaggle or other open datasets.<br \/>\n        The image data will be resized and normalized to the same size, then converted to tensors. Typically, it is common to resize images to (64, 64)<br \/>\n        and normalize them to the range of [-1, 1].\n    <\/p>\n<h3>2.1. Image Preprocessing<\/h3>\n<p>Below is the Python code to implement the image preprocessing process:<\/p>\n<pre><code>\nimport os\nimport numpy as np\nimport cv2\nfrom torchvision import transforms\nfrom PIL import Image\nimport torch\n\ndef load_images_from_folder(folder):\n    images = []\n    for filename in os.listdir(folder):\n        img = cv2.imread(os.path.join(folder, filename))\n        if img is not None:\n            img = cv2.resize(img, (64, 64))\n            img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)\n            images.append(img)\n    return np.array(images)\n\nfolder = 'path_to_your_dataset'\ndataset = load_images_from_folder(folder)\n\ntransform = transforms.Compose([\n    transforms.ToPILImage(),\n    transforms.ToTensor(),\n    transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)),\n])\ntensor_images = [transform(Image.fromarray(img)).unsqueeze(0) for img in dataset]\n\nimages_tensor = torch.cat(tensor_images)\n    <\/code><\/pre>\n<h2>3. Implementing the GAN Structure<\/h2>\n<p>\n        To implement GAN, we first need to define the generator and discriminator.<br \/>\n        The generator typically uses Fully Connected Layers and Convolutional Layers to generate images.<br \/>\n        The discriminator uses Convolutional Layers to judge the authenticity of images.<br \/>\n        Below is a simple GAN model written in PyTorch.\n    <\/p>\n<h3>3.1. Generator Model<\/h3>\n<pre><code>\nimport torch.nn as nn\n\nclass Generator(nn.Module):\n    def __init__(self, input_dim, output_dim):\n        super(Generator, self).__init__()\n        self.model = nn.Sequential(\n            nn.Linear(input_dim, 128),\n            nn.ReLU(),\n            nn.Linear(128, 256),\n            nn.ReLU(),\n            nn.Linear(256, output_dim),\n            nn.Tanh()  # Output range to [-1, 1]\n        )\n    \n    def forward(self, z):\n        img = self.model(z)\n        return img.view(img.size(0), 3, 64, 64)  # Reshape for image output\n    <\/code><\/pre>\n<h3>3.2. Discriminator Model<\/h3>\n<pre><code>\nclass Discriminator(nn.Module):\n    def __init__(self, input_dim):\n        super(Discriminator, self).__init__()\n        self.model = nn.Sequential(\n            nn.Conv2d(3, 32, kernel_size=4, stride=2, padding=1),\n            nn.LeakyReLU(0.2),\n            nn.Conv2d(32, 64, kernel_size=4, stride=2, padding=1),\n            nn.LeakyReLU(0.2),\n            nn.Flatten(),\n            nn.Linear(64 * 16 * 16, 1),\n            nn.Sigmoid()  # Output range to [0, 1]\n        )\n\n    def forward(self, img):\n        return self.model(img)\n    <\/code><\/pre>\n<h2>4. Training the GAN<\/h2>\n<p>\n        To train the GAN, the following steps are repeated.<br \/>\n        The generator generates images using random noise,<br \/>\n        and the discriminator distinguishes between the generated images and real images.<br \/>\n        Then, each model is updated based on the loss function.\n    <\/p>\n<pre><code>\nimport torch.optim as optim\n\ndevice = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n\n# Hyperparameters\ninput_dim = 100\noutput_dim = 3 * 64 * 64\nlr = 0.0002\nnum_epochs = 200\n\n# Models and optimizers\ngenerator = Generator(input_dim, output_dim).to(device)\ndiscriminator = Discriminator(output_dim).to(device)\ncriterion = nn.BCELoss()\noptimizer_G = optim.Adam(generator.parameters(), lr=lr)\noptimizer_D = optim.Adam(discriminator.parameters(), lr=lr)\n\n# Label for real and fake images\nreal_labels = torch.ones(batch_size, 1).to(device)\nfake_labels = torch.zeros(batch_size, 1).to(device)\n\nfor epoch in range(num_epochs):\n    for i, imgs in enumerate(dataloader):\n        # Train Discriminator\n        optimizer_D.zero_grad()\n        real_imgs = imgs.to(device)\n        real_loss = criterion(discriminator(real_imgs), real_labels)\n        \n        z = torch.randn(batch_size, input_dim).to(device)\n        fake_imgs = generator(z)\n        fake_loss = criterion(discriminator(fake_imgs.detach()), fake_labels)\n        \n        d_loss = real_loss + fake_loss\n        d_loss.backward()\n        optimizer_D.step()\n        \n        # Train Generator\n        optimizer_G.zero_grad()\n        g_loss = criterion(discriminator(fake_imgs), real_labels)\n        g_loss.backward()\n        optimizer_G.step()\n\n        if (i + 1) % 100 == 0:\n            print(f'Epoch [{epoch + 1}\/{num_epochs}], Step [{i + 1}\/{len(dataloader)}], '\n                  f'D Loss: {d_loss.item():.4f}, G Loss: {g_loss.item():.4f}')\n    <\/code><\/pre>\n<h2>5. Results and Visualization<\/h2>\n<p>\n        Once the training is complete, generated images can be visualized to evaluate performance.<br \/>\n        Below is the Python code to display the generated images in a grid format.\n    <\/p>\n<pre><code>\nimport matplotlib.pyplot as plt\n\ndef show_generated_images(generator, num_images):\n    z = torch.randn(num_images, input_dim).to(device)\n    generated_images = generator(z)\n\n    grid = torchvision.utils.make_grid(generated_images.cpu().detach(), nrow=5, normalize=True)\n    \n    plt.imshow(grid.permute(1, 2, 0))\n    plt.axis('off')\n    plt.show()\n\nshow_generated_images(generator, 25)\n    <\/code><\/pre>\n<h2>6. Conclusion<\/h2>\n<p>\n        We explored the process of building and training a generative model for apples and oranges using GAN. We learned how to implement a model<br \/>\n        using the powerful capabilities of the PyTorch framework with a practical dataset. Having experienced the potential of GANs that can be used in various fields,<br \/>\n        we encourage you to create more advanced models in the future.\n    <\/p>\n<p>\n        If you want to learn more, studying various variants of GAN, such as CycleGAN or StyleGAN, would also be a good idea.<br \/>\n        Through these advanced topics, we hope you expand your knowledge of deep learning technology.\n    <\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Generative Adversarial Networks (GANs) are a type of generative model that generate data similar to real data through competition between two neural networks (generator and discriminator). In this article, we will explore how to generate images of apples and oranges using GANs. We will implement GAN using the PyTorch framework and provide Python code for &hellip; <a href=\"https:\/\/atmokpo.com\/w\/36369\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;PyTorch-based GAN Deep Learning, Apples and Oranges&#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-36369","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, Apples and Oranges - \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\/36369\/\" \/>\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, Apples and Oranges - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"Generative Adversarial Networks (GANs) are a type of generative model that generate data similar to real data through competition between two neural networks (generator and discriminator). In this article, we will explore how to generate images of apples and oranges using GANs. We will implement GAN using the PyTorch framework and provide Python code for &hellip; \ub354 \ubcf4\uae30 &quot;PyTorch-based GAN Deep Learning, Apples and Oranges&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/36369\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:47:53+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:00:12+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\/36369\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/36369\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"PyTorch-based GAN Deep Learning, Apples and Oranges\",\"datePublished\":\"2024-11-01T09:47:53+00:00\",\"dateModified\":\"2024-11-01T11:00:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/36369\/\"},\"wordCount\":489,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"GAN deep learning course\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/36369\/\",\"url\":\"https:\/\/atmokpo.com\/w\/36369\/\",\"name\":\"PyTorch-based GAN Deep Learning, Apples and Oranges - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:47:53+00:00\",\"dateModified\":\"2024-11-01T11:00:12+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/36369\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/36369\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/36369\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PyTorch-based GAN Deep Learning, Apples and Oranges\"}]},{\"@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, Apples and Oranges - \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\/36369\/","og_locale":"ko_KR","og_type":"article","og_title":"PyTorch-based GAN Deep Learning, Apples and Oranges - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"Generative Adversarial Networks (GANs) are a type of generative model that generate data similar to real data through competition between two neural networks (generator and discriminator). In this article, we will explore how to generate images of apples and oranges using GANs. We will implement GAN using the PyTorch framework and provide Python code for &hellip; \ub354 \ubcf4\uae30 \"PyTorch-based GAN Deep Learning, Apples and Oranges\"","og_url":"https:\/\/atmokpo.com\/w\/36369\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:47:53+00:00","article_modified_time":"2024-11-01T11:00:12+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\/36369\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/36369\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"PyTorch-based GAN Deep Learning, Apples and Oranges","datePublished":"2024-11-01T09:47:53+00:00","dateModified":"2024-11-01T11:00:12+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/36369\/"},"wordCount":489,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["GAN deep learning course"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/36369\/","url":"https:\/\/atmokpo.com\/w\/36369\/","name":"PyTorch-based GAN Deep Learning, Apples and Oranges - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:47:53+00:00","dateModified":"2024-11-01T11:00:12+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/36369\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/36369\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/36369\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"PyTorch-based GAN Deep Learning, Apples and Oranges"}]},{"@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\/36369","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=36369"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/36369\/revisions"}],"predecessor-version":[{"id":36370,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/36369\/revisions\/36370"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=36369"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=36369"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=36369"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}