{"id":36583,"date":"2024-11-01T09:49:45","date_gmt":"2024-11-01T09:49:45","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=36583"},"modified":"2024-11-01T11:52:37","modified_gmt":"2024-11-01T11:52:37","slug":"deep-learning-pytorch-course-explainable-cnn","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/36583\/","title":{"rendered":"Deep Learning PyTorch Course, Explainable CNN"},"content":{"rendered":"<p><body><\/p>\n<h2>1. Introduction: The Development of Deep Learning and CNNs<\/h2>\n<p>Deep learning is a field of artificial intelligence (AI) that has the ability to learn patterns and make predictions from large amounts of data. Among these, Convolutional Neural Networks (CNNs) have established themselves as a powerful tool for image processing. CNNs effectively extract patterns from low-dimensional data and have a structure capable of learning high-dimensional features. However, understanding the internal workings of CNNs can be challenging, making explainability a topic of great interest for many researchers today.<\/p>\n<h2>2. The Necessity of Explainable Deep Learning<\/h2>\n<p>Deep learning models, especially those with complex structures like CNNs, are often perceived as &#8216;black boxes&#8217;. This means it is difficult to understand how the model makes decisions. Therefore, developing explainable CNN models has become increasingly important. This helps users to understand the predictions made by the model and contributes to enhancing the model&#8217;s reliability.<\/p>\n<h2>3. Implementing CNN with PyTorch<\/h2>\n<p>First, let&#8217;s go through the basic setup required to implement a CNN. PyTorch is a powerful machine learning library that helps us build our CNN easily. We will start by installing the necessary libraries and preparing the data.<\/p>\n<h3>3.1 Installing PyTorch<\/h3>\n<pre><code>pip install torch torchvision<\/code><\/pre>\n<h3>3.2 Preparing the Dataset<\/h3>\n<p>We will use the CIFAR-10 dataset here. CIFAR-10 consists of 60,000 32&#215;32 pixel images across 10 classes. We can easily load the dataset using the torchvision library in PyTorch.<\/p>\n<pre><code>\nimport torch\nimport torchvision\nimport torchvision.transforms as transforms\n\n# Data transformation\ntransform = transforms.Compose(\n    [transforms.ToTensor(),\n     transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])\n\n# Download CIFAR-10 dataset\ntrainset = torchvision.datasets.CIFAR10(root='.\/data', train=True,\n                                        download=True, transform=transform)\ntrainloader = torch.utils.data.DataLoader(trainset, batch_size=4,\n                                          shuffle=True, num_workers=2)\n\ntestset = torchvision.datasets.CIFAR10(root='.\/data', train=False,\n                                       download=True, transform=transform)\ntestloader = torch.utils.data.DataLoader(testset, batch_size=4,\n                                         shuffle=False, num_workers=2)\n    <\/code><\/pre>\n<h3>3.3 Defining the CNN Model<\/h3>\n<p>Now, we will define the CNN model. We will use a simple CNN architecture by stacking different layers. The model is built by combining convolutional layers and pooling layers.<\/p>\n<pre><code>\nimport torch.nn as nn\nimport torch.nn.functional as F\n\nclass SimpleCNN(nn.Module):\n    def __init__(self):\n        super(SimpleCNN, self).__init__()\n        self.conv1 = nn.Conv2d(3, 6, 5)  # 3-channel input, 6-channel output, kernel size 5\n        self.pool = nn.MaxPool2d(2, 2)   # 2x2 max pooling\n        self.conv2 = nn.Conv2d(6, 16, 5) # 6-channel input, 16-channel output, kernel size 5\n        self.fc1 = nn.Linear(16 * 5 * 5, 120)  # Fully connected layer\n        self.fc2 = nn.Linear(120, 84)\n        self.fc3 = nn.Linear(84, 10)\n\n    def forward(self, x):\n        x = self.pool(F.relu(self.conv1(x)))\n        x = self.pool(F.relu(self.conv2(x)))\n        x = x.view(-1, 16 * 5 * 5)  # Flattening the output\n        x = F.relu(self.fc1(x))\n        x = F.relu(self.fc2(x))\n        x = self.fc3(x)\n        return x\n    <\/code><\/pre>\n<h3>3.4 Training the Model<\/h3>\n<p>Having defined the model, we will now proceed with the training process. We will set up the loss function and optimizer, and train the model for a specified number of epochs.<\/p>\n<pre><code>\nimport torch.optim as optim\n\n# Create model instance\nnet = SimpleCNN()\n\n# Define loss function and optimizer\ncriterion = nn.CrossEntropyLoss()\noptimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)\n\n# Train the model\nfor epoch in range(2):  # Setting the number of iterations\n    running_loss = 0.0\n    for i, data in enumerate(trainloader, 0):\n        inputs, labels = data\n        optimizer.zero_grad()  # Zero the gradients\n        outputs = net(inputs)  # Model predictions\n        loss = criterion(outputs, labels)  # Calculate loss\n        loss.backward()  # Calculate gradients\n        optimizer.step()  # Update parameters\n        running_loss += loss.item()\n        if i % 2000 == 1999:  # Print every 2000th batch\n            print(f\"[{epoch + 1}, {i + 1}] Loss: {running_loss \/ 2000:.3f}\")\n            running_loss = 0.0\n    print(\"Training complete!\")\n    <\/code><\/pre>\n<h3>3.5 Evaluating the Model<\/h3>\n<p>We will evaluate the trained model using the test dataset. By measuring accuracy, we can check how well the model has learned.<\/p>\n<pre><code>\ncorrect = 0\ntotal = 0\n\nwith torch.no_grad():\n    for data in testloader:\n        images, labels = data\n        outputs = net(images)\n        _, predicted = torch.max(outputs.data, 1)\n        total += labels.size(0)\n        correct += (predicted == labels).sum().item()\n\nprint(f'Accuracy: {100 * correct \/ total:.2f}%')\n    <\/code><\/pre>\n<h2>4. Implementing Explainable CNNs<\/h2>\n<p>Now, we will explore how to make CNNs explainable. One approach is to use the Grad-CAM (Gradient-weighted Class Activation Mapping) technique to visualize which parts of the model had a significant impact on the predictions.<\/p>\n<h3>4.1 Defining Grad-CAM<\/h3>\n<p>Grad-CAM is a method for visualizing contributions to the predictions of a CNN. This can provide users with insights into the model&#8217;s interpretability. Here is the code for implementing Grad-CAM.<\/p>\n<pre><code>\nimport cv2\nimport numpy as np\nimport matplotlib.pyplot as plt\n\ndef grad_cam(input_model, image, category_index):\n    # Get the last convolutional layer of the model.\n    final_conv_layer = 'conv2'\n    grad_model = nn.Sequential(*list(input_model.children())[:-1])\n    \n    with torch.enable_grad():\n        # Convert input image to tensor\n        inputs = image.unsqueeze(0)  # Add batch dimension\n        inputs.requires_grad = True  # Set to require gradients\n        preds = grad_model(inputs)  # Predictions\n        class_channel = preds[0][category_index]  # Target class channel\n        \n        # Compute gradients for the predicted class\n        grad_model.zero_grad()\n        class_channel.backward()\n        \n        # Get the output and gradients of the last convolutional layer\n        conv_layer_output = grad_model[-1].forward(inputs).cpu().data.numpy()\n        gradients = grad_model[-1].weight.grad.cpu().data.numpy()\n        \n        # Calculate the ratio for generating Grad-CAM\n        alpha = np.mean(gradients, axis=(2, 3))[0, :]\n        cam = np.dot(alpha, conv_layer_output[0])  # Contribution calculation\n        cam = np.maximum(cam, 0)  # ReLU application\n        cam = cam \/ np.max(cam)  # Normalization\n        \n        # Overlay on the original image\n        return cam\n    <\/code><\/pre>\n<h3>4.2 Applying Grad-CAM<\/h3>\n<p>Now, let&#8217;s apply Grad-CAM to the trained model and visualize some images.<\/p>\n<pre><code>\n# Load example image\nimage, label = testset[0]\ncategory_index = label  # Target class index\ncam = grad_cam(net, image, category_index)\n\n# Visualizing original image and Grad-CAM heatmap\nplt.subplot(1, 2, 1)\nplt.imshow(image.permute(1, 2, 0))\nplt.title('Original Image')\n\nplt.subplot(1, 2, 2)\nplt.imshow(cam, cmap='jet', alpha=0.5)  # Apply color map\nplt.title('Grad-CAM Heatmap')\nplt.show()\n    <\/code><\/pre>\n<h2>5. Conclusion<\/h2>\n<p>Explainability in deep learning is becoming an increasingly important topic. There is a need for ways to understand the internal workings of CNNs and to visually explain their results. We explored how to implement CNNs using PyTorch and interpret the model&#8217;s predictions through the Grad-CAM technique.<\/p>\n<p>This process began with training a simple CNN model and culminated in utilizing the state-of-the-art explainable deep learning technique, Grad-CAM, to interpret and visualize the predictions of CNNs. In the future, we should continue to explore more complex models and methodologies through various attempts. The development of explainable AI systems is crucial alongside the advancement of deep learning.<\/p>\n<h2>6. References<\/h2>\n<ul>\n<li><a href=\"https:\/\/pytorch.org\/docs\/stable\/index.html\">PyTorch Documentation<\/a><\/li>\n<li><a href=\"https:\/\/arxiv.org\/abs\/1610.02391\">Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization<\/a><\/li>\n<li><a href=\"https:\/\/www.cs.toronto.edu\/~kriz\/cifar.html\">CIFAR-10 Dataset<\/a><\/li>\n<\/ul>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>1. Introduction: The Development of Deep Learning and CNNs Deep learning is a field of artificial intelligence (AI) that has the ability to learn patterns and make predictions from large amounts of data. Among these, Convolutional Neural Networks (CNNs) have established themselves as a powerful tool for image processing. CNNs effectively extract patterns from low-dimensional &hellip; <a href=\"https:\/\/atmokpo.com\/w\/36583\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Deep Learning PyTorch Course, Explainable CNN&#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":[149],"tags":[],"class_list":["post-36583","post","type-post","status-publish","format-standard","hentry","category-pytorch-study"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Deep Learning PyTorch Course, Explainable CNN - \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\/36583\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Deep Learning PyTorch Course, Explainable CNN - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"1. Introduction: The Development of Deep Learning and CNNs Deep learning is a field of artificial intelligence (AI) that has the ability to learn patterns and make predictions from large amounts of data. Among these, Convolutional Neural Networks (CNNs) have established themselves as a powerful tool for image processing. CNNs effectively extract patterns from low-dimensional &hellip; \ub354 \ubcf4\uae30 &quot;Deep Learning PyTorch Course, Explainable CNN&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/36583\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:49:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:52:37+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\/36583\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/36583\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Deep Learning PyTorch Course, Explainable CNN\",\"datePublished\":\"2024-11-01T09:49:45+00:00\",\"dateModified\":\"2024-11-01T11:52:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/36583\/\"},\"wordCount\":526,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"PyTorch Study\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/36583\/\",\"url\":\"https:\/\/atmokpo.com\/w\/36583\/\",\"name\":\"Deep Learning PyTorch Course, Explainable CNN - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:49:45+00:00\",\"dateModified\":\"2024-11-01T11:52:37+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/36583\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/36583\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/36583\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Deep Learning PyTorch Course, Explainable CNN\"}]},{\"@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 PyTorch Course, Explainable CNN - \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\/36583\/","og_locale":"ko_KR","og_type":"article","og_title":"Deep Learning PyTorch Course, Explainable CNN - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"1. Introduction: The Development of Deep Learning and CNNs Deep learning is a field of artificial intelligence (AI) that has the ability to learn patterns and make predictions from large amounts of data. Among these, Convolutional Neural Networks (CNNs) have established themselves as a powerful tool for image processing. CNNs effectively extract patterns from low-dimensional &hellip; \ub354 \ubcf4\uae30 \"Deep Learning PyTorch Course, Explainable CNN\"","og_url":"https:\/\/atmokpo.com\/w\/36583\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:49:45+00:00","article_modified_time":"2024-11-01T11:52:37+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\/36583\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/36583\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Deep Learning PyTorch Course, Explainable CNN","datePublished":"2024-11-01T09:49:45+00:00","dateModified":"2024-11-01T11:52:37+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/36583\/"},"wordCount":526,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["PyTorch Study"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/36583\/","url":"https:\/\/atmokpo.com\/w\/36583\/","name":"Deep Learning PyTorch Course, Explainable CNN - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:49:45+00:00","dateModified":"2024-11-01T11:52:37+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/36583\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/36583\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/36583\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"Deep Learning PyTorch Course, Explainable CNN"}]},{"@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\/36583","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=36583"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/36583\/revisions"}],"predecessor-version":[{"id":36584,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/36583\/revisions\/36584"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=36583"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=36583"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=36583"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}