{"id":36591,"date":"2024-11-01T09:49:49","date_gmt":"2024-11-01T09:49:49","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=36591"},"modified":"2024-11-01T11:52:35","modified_gmt":"2024-11-01T11:52:35","slug":"deep-learning-pytorch-course-deep-neural-networks","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/36591\/","title":{"rendered":"Deep Learning PyTorch Course, Deep Neural Networks"},"content":{"rendered":"<p><body><\/p>\n<p>\n    In this course, we will start with the basic concepts of deep learning and learn how to implement Deep Neural Networks (DNN) using PyTorch. Deep Neural Networks are a crucial element in solving various problems in the field of artificial intelligence. Through this course, you will learn about the structure of deep neural networks, learning methods, and the basic usage of PyTorch.\n<\/p>\n<h2>1. What is Deep Learning?<\/h2>\n<p>\n    Deep Learning is a field of Artificial Intelligence (AI) that processes and predicts data based on Artificial Neural Networks. A Deep Neural Network consists of multiple hidden layers, allowing it to learn complex patterns.\n<\/p>\n<h3>1.1. Key Features of Deep Learning<\/h3>\n<ul>\n<li>Large Amounts of Data: Deep learning learns features from large amounts of data.<\/li>\n<li>Unsupervised Learning: Typically, deep learning learns the relationships between inputs and outputs through unsupervised learning.<\/li>\n<li>Complex Models: It can model non-linearity through a hierarchical structure.<\/li>\n<\/ul>\n<h2>2. Structure of Deep Neural Networks<\/h2>\n<p>\n    A Deep Neural Network consists of an input layer, several hidden layers, and an output layer. Each layer consists of multiple nodes, and each node calculates the output value of that layer.\n<\/p>\n<h3>2.1. Components<\/h3>\n<h4>2.1.1. Node<\/h4>\n<p>A node receives input, applies weights and biases, passes the result through an activation function, and generates the output.<\/p>\n<h4>2.1.2. Activation Function<\/h4>\n<p>An activation function is a function that non-linearly transforms the output of a node. Common activation functions include Sigmoid, Tanh, and ReLU (Rectified Linear Unit).<\/p>\n<h4>2.1.3. Forward Propagation<\/h4>\n<p>The forward propagation process is the procedure of passing input data through the network to calculate the output. In this process, the nodes of all hidden layers receive input values, apply weights and biases, and generate results through the activation function.<\/p>\n<h4>2.1.4. Backward Propagation<\/h4>\n<p>The backward propagation process is the procedure of adjusting weights and biases to reduce the error between the network&#8217;s output and the actual target values. We update the weights using Gradient Descent.<\/p>\n<h3>2.2. Formulas for Deep Neural Networks<\/h3>\n<p>The output of a deep neural network can be expressed as follows:<\/p>\n<pre><code>y = f(W * x + b)<\/code><\/pre>\n<p>Here, <code>y<\/code> represents the output, <code>f<\/code> is the activation function, <code>W<\/code> is the weight, <code>x<\/code> is the input, and <code>b<\/code> is the bias.<\/p>\n<h2>3. Basics of PyTorch<\/h2>\n<p>\n    PyTorch is an open-source machine learning library developed by Facebook (now Meta). It features ease of use and dynamic computation graphs (Define-by-Run). We will learn how to implement deep neural networks with PyTorch.\n<\/p>\n<h3>3.1. Installation<\/h3>\n<p>PyTorch can be easily installed using pip.<\/p>\n<pre><code>pip install torch torchvision torchaudio<\/code><\/pre>\n<h3>3.2. Basic Data Structure<\/h3>\n<p>The tensor provided by PyTorch is similar to a numpy array but supports GPU operations, making it optimized for deep learning. Here\u2019s how to create tensors:<\/p>\n<pre><code>\nimport torch\n\n# 1D tensor\nx = torch.tensor([1.0, 2.0, 3.0])\nprint(x)\n\n# 2D tensor\ny = torch.tensor([[1.0, 2.0], [3.0, 4.0]])\nprint(y)\n<\/code><\/pre>\n<h3>4. Implementing Deep Neural Networks<\/h3>\n<h4>4.1. Preparing the Dataset<\/h4>\n<p>To practice deep learning, we can use an empty dataset. Here, we will use the MNIST dataset. MNIST is a handwritten digit dataset consisting of numbers from 0 to 9.<\/p>\n<pre><code>\nfrom torchvision import datasets, transforms\n\ntransform = transforms.Compose([\n    transforms.ToTensor(),\n    transforms.Normalize((0.5,), (0.5,))\n])\n\n# Download MNIST dataset\ntrain_dataset = datasets.MNIST(root='.\/data', train=True, download=True, transform=transform)\ntrain_loader = torch.utils.data.DataLoader(dataset=train_dataset, batch_size=64, shuffle=True)\n<\/code><\/pre>\n<h4>4.2. Defining the Model<\/h4>\n<p>Next, we define the deep neural network model. The nn.Module class allows you to easily create a custom neural network class.<\/p>\n<pre><code>\nimport torch.nn as nn\nimport torch.nn.functional as F\n\nclass SimpleNN(nn.Module):\n    def __init__(self):\n        super(SimpleNN, self).__init__()\n        self.fc1 = nn.Linear(28 * 28, 128)\n        self.fc2 = nn.Linear(128, 64)\n        self.fc3 = nn.Linear(64, 10)\n\n    def forward(self, x):\n        x = x.view(-1, 28 * 28)  # Flatten the 2D tensor to 1D.\n        x = F.relu(self.fc1(x))\n        x = F.relu(self.fc2(x))\n        x = self.fc3(x)  # No activation function at the output layer\n        return x\n\nmodel = SimpleNN()\n<\/code><\/pre>\n<h4>4.3. Setting Loss Function and Optimizer<\/h4>\n<p>We set the loss function and optimizer for model training. Here, we will use Cross Entropy Loss and Stochastic Gradient Descent (SGD) optimizer.<\/p>\n<pre><code>\nimport torch.optim as optim\n\ncriterion = nn.CrossEntropyLoss()\noptimizer = optim.SGD(model.parameters(), lr=0.01)\n<\/code><\/pre>\n<h4>4.4. Training Loop<\/h4>\n<p>Finally, we will write a loop for model training. For each batch, we will perform forward propagation, loss calculation, and backward propagation.<\/p>\n<pre><code>\nnum_epochs = 5\n\nfor epoch in range(num_epochs):\n    for images, labels in train_loader:\n        # Zero gradients\n        optimizer.zero_grad()\n        \n        # Forward propagation\n        outputs = model(images)\n        \n        # Calculate loss\n        loss = criterion(outputs, labels)\n        \n        # Backward propagation\n        loss.backward()\n        \n        # Update weights\n        optimizer.step()\n    \n    print(f'Epoch [{epoch + 1}\/{num_epochs}], Loss: {loss.item():.4f}')\n<\/code><\/pre>\n<h2>5. Performance Evaluation<\/h2>\n<p>\n    Once the model training is complete, we use the test dataset to evaluate the model&#8217;s performance and calculate accuracy. This will help verify how well the model has learned.\n<\/p>\n<pre><code>\n# Prepare test dataset\ntest_dataset = datasets.MNIST(root='.\/data', train=False, download=True, transform=transform)\ntest_loader = torch.utils.data.DataLoader(dataset=test_dataset, batch_size=64, shuffle=False)\n\nmodel.eval()  # Switch to evaluation mode\ncorrect = 0\ntotal = 0\n\nwith torch.no_grad():\n    for images, labels in test_loader:\n        outputs = model(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>Conclusion<\/h2>\n<p>\n    In this course, we explored the basic concepts of deep neural networks and how to implement them using PyTorch. After preparing the dataset and defining the model, we built the model through actual training and evaluation processes. Based on your understanding of deep learning and PyTorch, I encourage you to try more complex networks or various models.\n<\/p>\n<p>\n    Research and application of deep neural networks will continue to develop, contributing to the advancement of the fields of machine learning and artificial intelligence.\n<\/p>\n<p>\n    Please continue your in-depth learning through additional materials and references. We wish all readers a successful journey in deep learning!\n<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this course, we will start with the basic concepts of deep learning and learn how to implement Deep Neural Networks (DNN) using PyTorch. Deep Neural Networks are a crucial element in solving various problems in the field of artificial intelligence. Through this course, you will learn about the structure of deep neural networks, learning &hellip; <a href=\"https:\/\/atmokpo.com\/w\/36591\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Deep Learning PyTorch Course, Deep Neural Networks&#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-36591","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, Deep Neural Networks - \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\/36591\/\" \/>\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, Deep Neural Networks - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"In this course, we will start with the basic concepts of deep learning and learn how to implement Deep Neural Networks (DNN) using PyTorch. Deep Neural Networks are a crucial element in solving various problems in the field of artificial intelligence. Through this course, you will learn about the structure of deep neural networks, learning &hellip; \ub354 \ubcf4\uae30 &quot;Deep Learning PyTorch Course, Deep Neural Networks&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/36591\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:49:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:52:35+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\/36591\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/36591\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Deep Learning PyTorch Course, Deep Neural Networks\",\"datePublished\":\"2024-11-01T09:49:49+00:00\",\"dateModified\":\"2024-11-01T11:52:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/36591\/\"},\"wordCount\":668,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"PyTorch Study\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/36591\/\",\"url\":\"https:\/\/atmokpo.com\/w\/36591\/\",\"name\":\"Deep Learning PyTorch Course, Deep Neural Networks - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:49:49+00:00\",\"dateModified\":\"2024-11-01T11:52:35+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/36591\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/36591\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/36591\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Deep Learning PyTorch Course, Deep Neural Networks\"}]},{\"@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, Deep Neural Networks - \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\/36591\/","og_locale":"ko_KR","og_type":"article","og_title":"Deep Learning PyTorch Course, Deep Neural Networks - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"In this course, we will start with the basic concepts of deep learning and learn how to implement Deep Neural Networks (DNN) using PyTorch. Deep Neural Networks are a crucial element in solving various problems in the field of artificial intelligence. Through this course, you will learn about the structure of deep neural networks, learning &hellip; \ub354 \ubcf4\uae30 \"Deep Learning PyTorch Course, Deep Neural Networks\"","og_url":"https:\/\/atmokpo.com\/w\/36591\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:49:49+00:00","article_modified_time":"2024-11-01T11:52:35+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\/36591\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/36591\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Deep Learning PyTorch Course, Deep Neural Networks","datePublished":"2024-11-01T09:49:49+00:00","dateModified":"2024-11-01T11:52:35+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/36591\/"},"wordCount":668,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["PyTorch Study"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/36591\/","url":"https:\/\/atmokpo.com\/w\/36591\/","name":"Deep Learning PyTorch Course, Deep Neural Networks - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:49:49+00:00","dateModified":"2024-11-01T11:52:35+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/36591\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/36591\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/36591\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"Deep Learning PyTorch Course, Deep Neural Networks"}]},{"@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\/36591","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=36591"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/36591\/revisions"}],"predecessor-version":[{"id":36592,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/36591\/revisions\/36592"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=36591"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=36591"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=36591"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}