{"id":36581,"date":"2024-11-01T09:49:44","date_gmt":"2024-11-01T09:49:44","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=36581"},"modified":"2024-11-01T11:52:37","modified_gmt":"2024-11-01T11:52:37","slug":"deep-learning-pytorch-course-support-vector-machine","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/36581\/","title":{"rendered":"Deep Learning PyTorch Course, Support Vector Machine"},"content":{"rendered":"<p><body><\/p>\n<p>In this article, we will take a closer look at Support Vector Machines (SVM), an important technique in machine learning, and implement it using PyTorch. Support Vector Machines perform exceptionally well, especially in classification problems. SVM is a classification algorithm based on the maximum margin principle, primarily used as a linear classifier, but it can also be effectively applied to nonlinear data through kernel tricks.<\/p>\n<h2>1. What is Support Vector Machine (SVM)?<\/h2>\n<p>Support Vector Machine is an algorithm that finds the optimal hyperplane that separates two classes. Here, &#8216;optimal&#8217; refers to maximizing the margin, which is the distance from the hyperplane to the nearest data point (the support vector). SVM is designed to enhance generalization capability by maximizing this margin for the given data.<\/p>\n<h3>1.1. Basic Principle of SVM<\/h3>\n<p>The basic operation principle of SVM is as follows:<\/p>\n<ol>\n<li>Support Vector: The data points that are closest to the hyperplane are known as support vectors.<\/li>\n<li>Hyperplane: It creates a linear decision boundary that separates the given two class data.<\/li>\n<li>Margin: It improves classification ability by optimizing the maximum distance between the hyperplane and the support vectors.<\/li>\n<li>Kernel Trick: A technique devised to solve nonlinear separation problems in SVM, enabling linear separation by mapping to high-dimensional data.<\/li>\n<\/ol>\n<h2>2. Mathematical Background of SVM<\/h2>\n<p>The primary goal of SVM is to solve the following optimization problem:<\/p>\n<h3>2.1. Setting the Optimization Problem<\/h3>\n<p>Given the data in the form of <code>(x_i, y_i)<\/code>, where <code>x_i<\/code> is the input data and <code>y_i<\/code> is the class label (1 or -1). SVM sets up the following optimization problem:<\/p>\n<pre><code>minimize (1\/2) ||w||^2\nsubject to y_i (w * x_i + b) &gt;= 1<\/code><\/pre>\n<p>Here, <code>w<\/code> refers to the weight vector of the hyperplane, and <code>b<\/code> refers to the bias. The above equation defines the optimal boundary and maximizes the margin.<\/p>\n<h3>2.2. Kernel Methods<\/h3>\n<p>To deal with nonlinear data, SVM employs kernel functions. Kernel functions transform the data into a high-dimensional space, making them separable. Commonly used kernel functions include:<\/p>\n<ul>\n<li>Linear Kernel: <code>K(x, x') = x * x'<\/code><\/li>\n<li>Polynomial Kernel: <code>K(x, x') = (alpha * (x * x') + c)^d<\/code><\/li>\n<li>Gaussian RBF Kernel: <code>K(x, x') = exp(-gamma * ||x - x'||^2)<\/code><\/li>\n<\/ul>\n<h2>3. Implementing SVM with PyTorch<\/h2>\n<p>Now, let&#8217;s implement SVM using PyTorch. Although PyTorch is a deep learning framework, it can also be easily used to implement algorithms like SVM due to its capability for numerical computation. Let\u2019s proceed to the next steps:<\/p>\n<h3>3.1. Installing Packages and Preparing Data<\/h3>\n<p>First, we will install the required packages and generate the data we will use.<\/p>\n<pre><code>import torch\nimport numpy as np\nimport matplotlib.pyplot as plt\nfrom sklearn.datasets import make_moons\nfrom sklearn.model_selection import train_test_split\n\n# Generate data\nX, y = make_moons(n_samples=100, noise=0.1, random_state=42)\ny = np.where(y == 0, -1, 1)  # Convert labels to -1 and 1\n\n# Split data\nX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n\n# Convert data to tensors\nX_train_tensor = torch.FloatTensor(X_train)\ny_train_tensor = torch.FloatTensor(y_train)\nX_test_tensor = torch.FloatTensor(X_test)\ny_test_tensor = torch.FloatTensor(y_test)<\/code><\/pre>\n<h3>3.2. Building the SVM Model<\/h3>\n<p>Now, we will build the SVM model. The model learns the weights <code>w<\/code> and bias <code>b<\/code> using the input data and labels.<\/p>\n<pre><code>class SVM(torch.nn.Module):\n    def __init__(self):\n        super(SVM, self).__init__()\n        self.w = torch.nn.Parameter(torch.randn(2, requires_grad=True))\n        self.b = torch.nn.Parameter(torch.randn(1, requires_grad=True))\n    \n    def forward(self, x):\n        return torch.matmul(x, self.w) + self.b\n    \n    def hinge_loss(self, y, output):\n        return torch.mean(torch.clamp(1 - y * output, min=0))<\/code><\/pre>\n<h3>3.3. Training and Testing<\/h3>\n<p>Before training the model, we need to set up the optimizer and learning rate.<\/p>\n<pre><code># Hyperparameter settings\nlearning_rate = 0.01\nnum_epochs = 1000\n\nmodel = SVM()\noptimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)\n\n# Training process\nfor epoch in range(num_epochs):\n    optimizer.zero_grad()\n    \n    # Model prediction\n    output = model(X_train_tensor)\n    \n    # Calculate loss (Hinge Loss)\n    loss = model.hinge_loss(y_train_tensor, output)\n    \n    # Backpropagation\n    loss.backward()\n    optimizer.step()\n\n    if (epoch+1) % 100 == 0:\n        print(f'Epoch [{epoch+1}\/{num_epochs}], Loss: {loss.item():.4f}')<\/code><\/pre>\n<h3>3.4. Visualizing the Results<\/h3>\n<p>Once the model training is complete, we can visualize the decision boundary to evaluate the model&#8217;s performance.<\/p>\n<pre><code># Visualizing decision boundary\ndef plot_decision_boundary(model, X, y):\n    x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1\n    y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1\n    xx, yy = np.meshgrid(np.linspace(x_min, x_max, 100), np.linspace(y_min, y_max, 100))\n    grid = torch.FloatTensor(np.c_[xx.ravel(), yy.ravel()])\n    \n    with torch.no_grad():\n        model.eval()\n        Z = model(grid)\n        Z = Z.view(xx.shape)\n        plt.contourf(xx, yy, Z.data.numpy(), levels=50, alpha=0.5)\n    \n    plt.scatter(X[:, 0], X[:, 1], c=y, s=20, edgecolor='k')\n    plt.title(\"SVM Decision Boundary\")\n    plt.xlabel(\"Feature 1\")\n    plt.ylabel(\"Feature 2\")\n    plt.show()\n\nplot_decision_boundary(model, X, y)<\/code><\/pre>\n<h2>4. Advantages and Disadvantages of SVM<\/h2>\n<p>While SVM exhibits remarkable performance, like any algorithm, it has its pros and cons.<\/p>\n<h3>4.1. Advantages<\/h3>\n<ul>\n<li>Effective for high-dimensional data.<\/li>\n<li>Superior generalization performance due to margin optimization.<\/li>\n<li>A variety of kernel methods exist for nonlinear classification.<\/li>\n<\/ul>\n<h3>4.2. Disadvantages<\/h3>\n<ul>\n<li>Training time can be long for large datasets.<\/li>\n<li>Performance improves with careful tuning of C and \u03b3.<\/li>\n<li>Memory and computational complexity can be high.<\/li>\n<\/ul>\n<h2>5. Conclusion<\/h2>\n<p>Support Vector Machine is a powerful classification algorithm that can be very useful, especially for classification problems rather than regression. By implementing SVM using PyTorch, we hope to reinforce some fundamental concepts of machine learning. Furthermore, it serves as a stepping stone for advancing into practical projects or research utilizing SVM.<\/p>\n<h2>6. References<\/h2>\n<ul>\n<li>Vapnik, V. (1998). Statistical Learning Theory. John Wiley &amp; Sons.<\/li>\n<li>Bishop, C. M. (2006). Pattern Recognition and Machine Learning. Springer.<\/li>\n<li>Russell, S. &amp; Norvig, P. (2010). Artificial Intelligence: A Modern Approach. Prentice Hall.<\/li>\n<\/ul>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this article, we will take a closer look at Support Vector Machines (SVM), an important technique in machine learning, and implement it using PyTorch. Support Vector Machines perform exceptionally well, especially in classification problems. SVM is a classification algorithm based on the maximum margin principle, primarily used as a linear classifier, but it can &hellip; <a href=\"https:\/\/atmokpo.com\/w\/36581\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Deep Learning PyTorch Course, Support Vector Machine&#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-36581","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, Support Vector Machine - \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\/36581\/\" \/>\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, Support Vector Machine - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"In this article, we will take a closer look at Support Vector Machines (SVM), an important technique in machine learning, and implement it using PyTorch. Support Vector Machines perform exceptionally well, especially in classification problems. SVM is a classification algorithm based on the maximum margin principle, primarily used as a linear classifier, but it can &hellip; \ub354 \ubcf4\uae30 &quot;Deep Learning PyTorch Course, Support Vector Machine&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/36581\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:49:44+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\/36581\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/36581\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Deep Learning PyTorch Course, Support Vector Machine\",\"datePublished\":\"2024-11-01T09:49:44+00:00\",\"dateModified\":\"2024-11-01T11:52:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/36581\/\"},\"wordCount\":587,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"PyTorch Study\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/36581\/\",\"url\":\"https:\/\/atmokpo.com\/w\/36581\/\",\"name\":\"Deep Learning PyTorch Course, Support Vector Machine - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:49:44+00:00\",\"dateModified\":\"2024-11-01T11:52:37+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/36581\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/36581\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/36581\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Deep Learning PyTorch Course, Support Vector Machine\"}]},{\"@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, Support Vector Machine - \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\/36581\/","og_locale":"ko_KR","og_type":"article","og_title":"Deep Learning PyTorch Course, Support Vector Machine - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"In this article, we will take a closer look at Support Vector Machines (SVM), an important technique in machine learning, and implement it using PyTorch. Support Vector Machines perform exceptionally well, especially in classification problems. SVM is a classification algorithm based on the maximum margin principle, primarily used as a linear classifier, but it can &hellip; \ub354 \ubcf4\uae30 \"Deep Learning PyTorch Course, Support Vector Machine\"","og_url":"https:\/\/atmokpo.com\/w\/36581\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:49:44+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\/36581\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/36581\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Deep Learning PyTorch Course, Support Vector Machine","datePublished":"2024-11-01T09:49:44+00:00","dateModified":"2024-11-01T11:52:37+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/36581\/"},"wordCount":587,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["PyTorch Study"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/36581\/","url":"https:\/\/atmokpo.com\/w\/36581\/","name":"Deep Learning PyTorch Course, Support Vector Machine - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:49:44+00:00","dateModified":"2024-11-01T11:52:37+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/36581\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/36581\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/36581\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"Deep Learning PyTorch Course, Support Vector Machine"}]},{"@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\/36581","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=36581"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/36581\/revisions"}],"predecessor-version":[{"id":36582,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/36581\/revisions\/36582"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=36581"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=36581"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=36581"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}