{"id":36585,"date":"2024-11-01T09:49:46","date_gmt":"2024-11-01T09:49:46","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=36585"},"modified":"2024-11-01T11:52:37","modified_gmt":"2024-11-01T11:52:37","slug":"deep-learning-pytorch-course-recurrent-neural-networks-rnn","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/36585\/","title":{"rendered":"Deep Learning PyTorch Course, Recurrent Neural Networks (RNN)"},"content":{"rendered":"<p><body><\/p>\n<header>\n<p>Recurrent Neural Networks (RNNs) are deep learning models with powerful capabilities for processing sequence data. In this course, we will start with the fundamental concepts of RNNs and provide a detailed explanation of how to implement them using PyTorch.<\/p>\n<\/header>\n<section>\n<h2>1. Overview of Recurrent Neural Networks (RNNs)<\/h2>\n<p>\n            Recurrent Neural Networks (RNNs) are a type of neural network structure designed so that previous information can influence the present information. They are primarily used for processing sequence data (e.g., natural language text, time series data). Traditional neural networks assume the independence of input data, but RNNs can learn dependencies over time.\n        <\/p>\n<p>\n            In the basic structure of an RNN, the input at each time point is fed into the model along with the hidden state from the previous time point. This connectivity allows RNNs to process the flow of information according to the sequence.\n        <\/p>\n<\/section>\n<section>\n<h2>2. Structure of RNNs<\/h2>\n<p>\n            The basic structure of an RNN is as follows:\n        <\/p>\n<ul>\n<li>Input layer: Takes in sequence data.<\/li>\n<li>Hidden layer: Consists of multiple layers temporally connected.<\/li>\n<li>Output layer: Provides the final prediction results.<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"RNN Structure\" src=\"rnn_structure.png\" style=\"width: 100%; max-width: 600px;\"\/><\/p>\n<p>\n<strong>Mathematical Representation:<\/strong> The update of an RNN is expressed as follows:<br \/>\n            <br \/>\n            h<sub>t<\/sub> = f(W<sub>hh<\/sub>h<sub>t-1<\/sub> + W<sub>xh<\/sub>x<sub>t<\/sub> + b<sub>h<\/sub>)<br \/>\n            <br \/>\n            y<sub>t<\/sub> = W<sub>hy<\/sub>h<sub>t<\/sub> + b<sub>y<\/sub>\n<\/p>\n<\/section>\n<section>\n<h2>3. Limitations of RNNs<\/h2>\n<p>\n            Traditional RNNs have limitations in learning dependencies for long sequences. This leads to the vanishing gradient problem, for which various RNN variants such as LSTM (Long Short-Term Memory) and GRU (Gated Recurrent Unit) have been proposed as solutions.\n        <\/p>\n<\/section>\n<section>\n<h2>4. Implementing RNN with PyTorch<\/h2>\n<p>\n            In this section, we will implement a simple RNN model using PyTorch. We will use the famous IMDB movie review dataset to classify the sentiment of movie reviews as positive or negative.\n        <\/p>\n<\/section>\n<section>\n<h3>4.1 Loading and Preprocessing Data<\/h3>\n<p>\n            We will use PyTorch&#8217;s torchtext library to load and preprocess the IMDB data.\n        <\/p>\n<pre><code>\nimport torch\nfrom torchtext.datasets import IMDB\nfrom torchtext.data import Field, BucketIterator\n\nTEXT = Field(tokenize='spacy', include_lengths=True)\nLABEL = Field(dtype=torch.float)\n\ntrain_data, test_data = IMDB.splits(TEXT, LABEL)\nTEXT.build_vocab(train_data, max_size=25000)\nLABEL.build_vocab(train_data)\n\ntrain_iterator, test_iterator = BucketIterator.splits(\n    (train_data, test_data), \n    batch_size=64, \n    sort_within_batch=True)\n        <\/code><\/pre>\n<p>\n            The above code shows the process of loading the IMDB dataset and preprocessing it by defining fields for text and labels.\n        <\/p>\n<\/section>\n<section>\n<h3>4.2 Defining the RNN Model<\/h3>\n<p>\n            We define the RNN model. We will implement the basic model by inheriting from PyTorch&#8217;s nn.Module.\n        <\/p>\n<pre><code>\nimport torch.nn as nn\n\nclass RNN(nn.Module):\n    def __init__(self, input_dim, emb_dim, hidden_dim, output_dim):\n        super().__init__()\n        \n        self.embedding = nn.Embedding(input_dim, emb_dim)\n        self.rnn = nn.RNN(emb_dim, hidden_dim)\n        self.fc = nn.Linear(hidden_dim, output_dim)\n        self.dropout = nn.Dropout(0.5)\n    \n    def forward(self, text, text_length):\n        embedded = self.dropout(self.embedding(text))\n        packed_embedded = nn.utils.rnn.pack_padded_sequence(embedded, text_length)\n        packed_output, hidden = self.rnn(packed_embedded)\n        output, output_length = nn.utils.rnn.pad_packed_sequence(packed_output)\n        return self.fc(hidden.squeeze(0))\n        <\/code><\/pre>\n<p>\n            This code constructs the RNN model using input dimension, embedding dimension, hidden dimension, and output dimension as arguments. This model consists of an embedding layer, an RNN layer, and an output layer.\n        <\/p>\n<\/section>\n<section>\n<h3>4.3 Training the Model<\/h3>\n<p>\n            Next, we will look at the process of training the model. We will use binary cross-entropy as the loss function and Adam as the optimization method.\n        <\/p>\n<pre><code>\nimport torch.optim as optim\n\ndevice = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n\nmodel = RNN(len(TEXT.vocab), 100, 256, 1)\nmodel = model.to(device)\n\noptimizer = optim.Adam(model.parameters())\ncriterion = nn.BCEWithLogitsLoss()\ncriterion = criterion.to(device)\n\ndef train(model, iterator, optimizer, criterion):\n    model.train()\n    epoch_loss = 0\n    \n    for batch in iterator:\n        text, text_length = batch.text\n        labels = batch.label\n        \n        optimizer.zero_grad()\n        predictions = model(text, text_length).squeeze(1)\n        \n        loss = criterion(predictions, labels)\n        loss.backward()\n        optimizer.step()\n        \n        epoch_loss += loss.item()\n        \n    return epoch_loss \/ len(iterator)\n        <\/code><\/pre>\n<p>\n            The train function trains the model on the given batch of data and returns the loss.\n        <\/p>\n<\/section>\n<section>\n<h3>4.4 Evaluating the Model<\/h3>\n<p>\n            It is also necessary to define a function to evaluate the model. You can evaluate it using the following code.\n        <\/p>\n<pre><code>\ndef evaluate(model, iterator, criterion):\n    model.eval()\n    epoch_loss = 0\n    \n    with torch.no_grad():\n        for batch in iterator:\n            text, text_length = batch.text\n            labels = batch.label\n            \n            predictions = model(text, text_length).squeeze(1)\n            loss = criterion(predictions, labels)\n            epoch_loss += loss.item()\n        \n    return epoch_loss \/ len(iterator)\n        <\/code><\/pre>\n<p>\n            The evaluate function assesses the model on the evaluation data and returns the loss value.\n        <\/p>\n<\/section>\n<section>\n<h3>4.5 Training and Evaluation Loop<\/h3>\n<p>\n            Finally, we write a training and evaluation loop to perform the model training.\n        <\/p>\n<pre><code>\nN_EPOCHS = 5\n\nfor epoch in range(N_EPOCHS):\n    train_loss = train(model, train_iterator, optimizer, criterion)\n    valid_loss = evaluate(model, test_iterator, criterion)\n\n    print(f'Epoch: {epoch+1:02}, Train Loss: {train_loss:.3f}, Valid Loss: {valid_loss:.3f}')\n        <\/code><\/pre>\n<p>\n            This loop trains the model according to the given number of epochs and outputs the training loss and validation loss at each epoch.\n        <\/p>\n<\/section>\n<section>\n<h2>5. Conclusion<\/h2>\n<p>\n            In this course, we learned the basic concepts of Recurrent Neural Networks (RNNs) and how to implement this model using PyTorch. RNNs are effective for processing sequence data, but they have limitations for long sequences. Therefore, it is necessary to consider variant models such as LSTM and GRU. Building on this knowledge, it would also be beneficial to experiment with various sequence data.\n        <\/p>\n<\/section>\n<footer>\n<p>This blog post will be a useful resource for those who are building a foundation in deep learning and machine learning. Continue experimenting with various models!<\/p>\n<\/footer>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Recurrent Neural Networks (RNNs) are deep learning models with powerful capabilities for processing sequence data. In this course, we will start with the fundamental concepts of RNNs and provide a detailed explanation of how to implement them using PyTorch. 1. Overview of Recurrent Neural Networks (RNNs) Recurrent Neural Networks (RNNs) are a type of neural &hellip; <a href=\"https:\/\/atmokpo.com\/w\/36585\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Deep Learning PyTorch Course, Recurrent Neural Networks (RNN)&#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-36585","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, Recurrent Neural Networks (RNN) - \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\/36585\/\" \/>\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, Recurrent Neural Networks (RNN) - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"Recurrent Neural Networks (RNNs) are deep learning models with powerful capabilities for processing sequence data. In this course, we will start with the fundamental concepts of RNNs and provide a detailed explanation of how to implement them using PyTorch. 1. Overview of Recurrent Neural Networks (RNNs) Recurrent Neural Networks (RNNs) are a type of neural &hellip; \ub354 \ubcf4\uae30 &quot;Deep Learning PyTorch Course, Recurrent Neural Networks (RNN)&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/36585\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:49:46+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=\"4\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/atmokpo.com\/w\/36585\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/36585\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Deep Learning PyTorch Course, Recurrent Neural Networks (RNN)\",\"datePublished\":\"2024-11-01T09:49:46+00:00\",\"dateModified\":\"2024-11-01T11:52:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/36585\/\"},\"wordCount\":583,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"PyTorch Study\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/36585\/\",\"url\":\"https:\/\/atmokpo.com\/w\/36585\/\",\"name\":\"Deep Learning PyTorch Course, Recurrent Neural Networks (RNN) - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:49:46+00:00\",\"dateModified\":\"2024-11-01T11:52:37+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/36585\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/36585\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/36585\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Deep Learning PyTorch Course, Recurrent Neural Networks (RNN)\"}]},{\"@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, Recurrent Neural Networks (RNN) - \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\/36585\/","og_locale":"ko_KR","og_type":"article","og_title":"Deep Learning PyTorch Course, Recurrent Neural Networks (RNN) - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"Recurrent Neural Networks (RNNs) are deep learning models with powerful capabilities for processing sequence data. In this course, we will start with the fundamental concepts of RNNs and provide a detailed explanation of how to implement them using PyTorch. 1. Overview of Recurrent Neural Networks (RNNs) Recurrent Neural Networks (RNNs) are a type of neural &hellip; \ub354 \ubcf4\uae30 \"Deep Learning PyTorch Course, Recurrent Neural Networks (RNN)\"","og_url":"https:\/\/atmokpo.com\/w\/36585\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:49:46+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":"4\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/atmokpo.com\/w\/36585\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/36585\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Deep Learning PyTorch Course, Recurrent Neural Networks (RNN)","datePublished":"2024-11-01T09:49:46+00:00","dateModified":"2024-11-01T11:52:37+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/36585\/"},"wordCount":583,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["PyTorch Study"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/36585\/","url":"https:\/\/atmokpo.com\/w\/36585\/","name":"Deep Learning PyTorch Course, Recurrent Neural Networks (RNN) - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:49:46+00:00","dateModified":"2024-11-01T11:52:37+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/36585\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/36585\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/36585\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"Deep Learning PyTorch Course, Recurrent Neural Networks (RNN)"}]},{"@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\/36585","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=36585"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/36585\/revisions"}],"predecessor-version":[{"id":36586,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/36585\/revisions\/36586"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=36585"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=36585"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=36585"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}