{"id":36339,"date":"2024-11-01T09:47:38","date_gmt":"2024-11-01T09:47:38","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=36339"},"modified":"2024-11-01T11:00:19","modified_gmt":"2024-11-01T11:00:19","slug":"using-pytorch-for-gan-deep-learning-rnn-extension","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/36339\/","title":{"rendered":"Using PyTorch for GAN Deep Learning, RNN Extension"},"content":{"rendered":"<p><body><\/p>\n<article>\n<p>In recent years, Generative Adversarial Networks (GANs) and Recurrent Neural Networks (RNNs) have received a lot of attention and have advanced significantly in the field of artificial intelligence. GANs are known for their excellent performance in generating new data, while RNNs are suitable for processing sequential data. This article will explain the fundamental concepts of GANs and RNNs using PyTorch and provide examples of how these two models can be extended.<\/p>\n<h2>1. Basics of GANs (Generative Adversarial Networks)<\/h2>\n<h3>1.1 Structure of GANs<\/h3>\n<p>A GAN consists of two neural networks: a Generator and a Discriminator. The Generator takes random noise as input to produce data that resembles real data, and the Discriminator determines whether the input data is real or generated. These two networks compete against each other during the training process.<\/p>\n<h3>1.2 How GANs Work<\/h3>\n<p>The training process of a GAN consists of the following steps:<\/p>\n<ol>\n<li>The Generator generates data through random noise.<\/li>\n<li>The generated data and real data are fed into the Discriminator.<\/li>\n<li>The Discriminator distinguishes between real data and generated data, and this information is used to update the weights of both the Generator and the Discriminator.<\/li>\n<\/ol>\n<p>This process is repeated, resulting in the Generator creating increasingly realistic data, while the Discriminator improves its ability to distinguish between the two.<\/p>\n<h3>1.3 Implementing GANs with PyTorch<\/h3>\n<p>Now, let&#8217;s implement a GAN using PyTorch. Below is a description of the basic GAN structure along with code examples.<\/p>\n<pre><code>import torch\nimport torch.nn as nn\nimport torch.optim as optim\nfrom torchvision import datasets, transforms\n\n# Define the Generator class\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(inplace=True),\n            nn.Linear(256, 512),\n            nn.ReLU(inplace=True),\n            nn.Linear(512, 1024),\n            nn.ReLU(inplace=True),\n            nn.Linear(1024, 784),\n            nn.Tanh()\n        )\n\n    def forward(self, z):\n        return self.model(z)\n\n# Define the Discriminator class\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.ReLU(inplace=True),\n            nn.Linear(512, 256),\n            nn.ReLU(inplace=True),\n            nn.Linear(256, 1),\n            nn.Sigmoid()\n        )\n\n    def forward(self, x):\n        return self.model(x)\n\n# Load and preprocess dataset\ntransform = transforms.Compose([\n    transforms.ToTensor(),\n    transforms.Normalize((0.5,), (0.5,))\n])\n\ndataset = datasets.MNIST(root='.\/data', train=True, download=True, transform=transform)\ndataloader = torch.utils.data.DataLoader(dataset, batch_size=64, shuffle=True)\n\n# Train the GAN\ndevice = 'cuda' if torch.cuda.is_available() else 'cpu'\ngenerator = Generator().to(device)\ndiscriminator = Discriminator().to(device)\n\ncriterion = nn.BCELoss()\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\nfor epoch in range(50):\n    for i, (images, _) in enumerate(dataloader):\n        images = images.view(images.size(0), -1).to(device)\n        batch_size = images.size(0)\n\n        # Create real and fake labels\n        real_labels = torch.ones(batch_size, 1).to(device)\n        fake_labels = torch.zeros(batch_size, 1).to(device)\n\n        # Train the Discriminator\n        optimizer_D.zero_grad()\n        outputs = discriminator(images)\n        d_loss_real = criterion(outputs, real_labels)\n        d_loss_real.backward()\n\n        z = torch.randn(batch_size, 100).to(device)\n        fake_images = generator(z)\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        # Train the Generator\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    print(f'Epoch [{epoch+1}\/{50}], d_loss: {d_loss_real.item() + d_loss_fake.item()}, g_loss: {g_loss.item()}')\n\n# View generated images (note that an image visualization function is needed in real code)\n<\/code><\/pre>\n<h2>2. Basics of RNNs (Recurrent Neural Networks)<\/h2>\n<h3>2.1 Basic Concept of RNNs<\/h3>\n<p>An RNN is a model used for processing sequential data, and it can remember and utilize previous information. An RNN updates its hidden state every time it processes an element of the input sequence to make predictions about the next elements.<\/p>\n<h3>2.2 How RNNs Work<\/h3>\n<p>An RNN functions as follows:<\/p>\n<ol>\n<li>It receives the first input and initializes the hidden state.<\/li>\n<li>For each input received, it computes a new hidden state based on the input and the previous hidden state.<\/li>\n<li>The final hidden state provides the prediction results for the entire sequence.<\/li>\n<\/ol>\n<h3>2.3 Implementing RNNs with PyTorch<\/h3>\n<p>Let&#8217;s implement an RNN using PyTorch. Below is an example code that describes the basic structure of an RNN.<\/p>\n<pre><code>import torch\nimport torch.nn as nn\nimport torch.optim as optim\n\n# Define the RNN model\nclass RNNModel(nn.Module):\n    def __init__(self, input_size, hidden_size, output_size):\n        super(RNNModel, self).__init__()\n        self.rnn = nn.RNN(input_size, hidden_size, batch_first=True)\n        self.fc = nn.Linear(hidden_size, output_size)\n\n    def forward(self, x):\n        rnn_out, _ = self.rnn(x)\n        out = self.fc(rnn_out[:, -1, :])  # Use the output of the last time step\n        return out\n\n# Hyperparameters\ninput_size = 1\nhidden_size = 128\noutput_size = 1\nnum_epochs = 100\nlearning_rate = 0.01\n\n# Create dataset (example with simple sine function data)\ndata = torch.sin(torch.linspace(0, 20, steps=100)).reshape(-1, 1, 1)\nlabels = torch.sin(torch.linspace(0.1, 20.1, steps=100)).reshape(-1, 1)\n\n# Create dataset and dataloader\ntrain_dataset = torch.utils.data.TensorDataset(data, labels)\ntrain_loader = torch.utils.data.DataLoader(train_dataset, batch_size=10, shuffle=True)\n\n# Initialize model, loss function, and optimizer\nmodel = RNNModel(input_size, hidden_size, output_size)\ncriterion = nn.MSELoss()\noptimizer = optim.Adam(model.parameters(), lr=learning_rate)\n\n# Train the RNN\nfor epoch in range(num_epochs):\n    for inputs, target in train_loader:\n        optimizer.zero_grad()\n        outputs = model(inputs)\n        loss = criterion(outputs, target)\n        loss.backward()\n        optimizer.step()\n\n    if (epoch+1) % 10 == 0:\n        print(f'Epoch [{epoch+1}\/{num_epochs}], Loss: {loss.item():.4f}')\n\n# View prediction results (note that a function to visualize predictions is needed in real code)\n<\/code><\/pre>\n<h2>3. Extending GANs and RNNs<\/h2>\n<h3>3.1 Combining GANs and RNNs<\/h3>\n<p>You can create a model that generates sequential data by combining GANs and RNNs. In this case, temporal information plays an important role, and the Generator uses RNNs to generate sequences. This method can be applied in various fields, including music generation and text generation.<\/p>\n<h3>3.2 Example of Combining GANs and RNNs<\/h3>\n<p>The following is an example code of a basic structure for generating new sequences by combining GANs and RNNs.<\/p>\n<pre><code>class RNNGenerator(nn.Module):\n    def __init__(self, input_size, hidden_size, output_size):\n        super(RNNGenerator, self).__init__()\n        self.rnn = nn.RNN(input_size, hidden_size, batch_first=True)\n        self.fc = nn.Linear(hidden_size, output_size)\n\n    def forward(self, z):\n        rnn_out, _ = self.rnn(z)\n        return self.fc(rnn_out)\n\nclass RNNDiscriminator(nn.Module):\n    def __init__(self, input_size, hidden_size):\n        super(RNNDiscriminator, self).__init__()\n        self.rnn = nn.RNN(input_size, hidden_size, batch_first=True)\n        self.fc = nn.Linear(hidden_size, 1)\n\n    def forward(self, x):\n        rnn_out, _ = self.rnn(x)\n        return torch.sigmoid(self.fc(rnn_out[:, -1, :]))\n\n# Hyperparameters\ninput_size = 1\nhidden_size = 128\noutput_size = 1\n\n# Initialize Generator and Discriminator\ngenerator = RNNGenerator(input_size, hidden_size, output_size)\ndiscriminator = RNNDiscriminator(input_size, hidden_size)\n\n# GAN training code (apply the same pattern as above)\n# (omitted)\n<\/code><\/pre>\n<h2>4. Conclusion<\/h2>\n<p>GANs and RNNs are both very powerful models, and combining them expands the range of tasks they can perform. Using PyTorch, it becomes straightforward and intuitive to design and train models. This article explored the basic concepts and applications of GANs and RNNs, which can serve as a foundation for exploring more diverse use cases.<\/p>\n<p>The field of deep learning is advancing rapidly, and new technologies and research are continuously being released. Therefore, it is essential to maintain ongoing interest in the latest trends and research. Thank you.<\/p>\n<\/article>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In recent years, Generative Adversarial Networks (GANs) and Recurrent Neural Networks (RNNs) have received a lot of attention and have advanced significantly in the field of artificial intelligence. GANs are known for their excellent performance in generating new data, while RNNs are suitable for processing sequential data. This article will explain the fundamental concepts of &hellip; <a href=\"https:\/\/atmokpo.com\/w\/36339\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Using PyTorch for GAN Deep Learning, RNN Extension&#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-36339","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>Using PyTorch for GAN Deep Learning, RNN Extension - \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\/36339\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Using PyTorch for GAN Deep Learning, RNN Extension - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"In recent years, Generative Adversarial Networks (GANs) and Recurrent Neural Networks (RNNs) have received a lot of attention and have advanced significantly in the field of artificial intelligence. GANs are known for their excellent performance in generating new data, while RNNs are suitable for processing sequential data. This article will explain the fundamental concepts of &hellip; \ub354 \ubcf4\uae30 &quot;Using PyTorch for GAN Deep Learning, RNN Extension&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/36339\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:47:38+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:00:19+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=\"6\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/atmokpo.com\/w\/36339\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/36339\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Using PyTorch for GAN Deep Learning, RNN Extension\",\"datePublished\":\"2024-11-01T09:47:38+00:00\",\"dateModified\":\"2024-11-01T11:00:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/36339\/\"},\"wordCount\":533,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"GAN deep learning course\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/36339\/\",\"url\":\"https:\/\/atmokpo.com\/w\/36339\/\",\"name\":\"Using PyTorch for GAN Deep Learning, RNN Extension - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:47:38+00:00\",\"dateModified\":\"2024-11-01T11:00:19+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/36339\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/36339\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/36339\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Using PyTorch for GAN Deep Learning, RNN Extension\"}]},{\"@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":"Using PyTorch for GAN Deep Learning, RNN Extension - \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\/36339\/","og_locale":"ko_KR","og_type":"article","og_title":"Using PyTorch for GAN Deep Learning, RNN Extension - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"In recent years, Generative Adversarial Networks (GANs) and Recurrent Neural Networks (RNNs) have received a lot of attention and have advanced significantly in the field of artificial intelligence. GANs are known for their excellent performance in generating new data, while RNNs are suitable for processing sequential data. This article will explain the fundamental concepts of &hellip; \ub354 \ubcf4\uae30 \"Using PyTorch for GAN Deep Learning, RNN Extension\"","og_url":"https:\/\/atmokpo.com\/w\/36339\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:47:38+00:00","article_modified_time":"2024-11-01T11:00:19+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":"6\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/atmokpo.com\/w\/36339\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/36339\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Using PyTorch for GAN Deep Learning, RNN Extension","datePublished":"2024-11-01T09:47:38+00:00","dateModified":"2024-11-01T11:00:19+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/36339\/"},"wordCount":533,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["GAN deep learning course"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/36339\/","url":"https:\/\/atmokpo.com\/w\/36339\/","name":"Using PyTorch for GAN Deep Learning, RNN Extension - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:47:38+00:00","dateModified":"2024-11-01T11:00:19+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/36339\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/36339\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/36339\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"Using PyTorch for GAN Deep Learning, RNN Extension"}]},{"@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\/36339","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=36339"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/36339\/revisions"}],"predecessor-version":[{"id":36340,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/36339\/revisions\/36340"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=36339"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=36339"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=36339"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}