

{"id":16915,"date":"2018-06-07T04:00:21","date_gmt":"2018-06-07T04:00:21","guid":{"rendered":"https:\/\/data-flair.training\/blogs\/?p=16915"},"modified":"2021-05-14T11:00:13","modified_gmt":"2021-05-14T05:30:13","slug":"tensorflow-pde","status":"publish","type":"post","link":"https:\/\/data-flair.training\/blogs\/tensorflow-pde\/","title":{"rendered":"Setup &#8211; TensorFlow PDE (Partial Differentiation Equation)"},"content":{"rendered":"<p><span style=\"font-weight: 400\">Today is another tutorial of applied mathematics with <strong>TensorFlow<\/strong>, where you\u2019ll be learning how to solve partial differential equations (PDE) using the <strong>machine learning<\/strong> library. <\/span><\/p>\n<p><span style=\"font-weight: 400\">Moreover, in this TensorFlow PDE tutorial, we will be going to learn the setup and convenience\u00a0function for Partial Differentiation Equation. Also, we will see TensorFlow PDE simulation with codes and examples.<\/span><\/p>\n<p>So, let&#8217;s start TensorFlow PDE (Partial Differentiation Equation) tutorial.<\/p>\n<h2><span style=\"font-weight: 400\">What is PDE (Partial Differential Equation)?<\/span><\/h2>\n<p><span style=\"font-weight: 400\">This TensorFlow tutorial is for those who already have an understanding of partial differential equations. But don\u2019t worry if you\u2019re not familiar with the topic. Here\u2019s a great PDE tutorial link that you can go through to know about PDEs:<\/span><\/p>\n<p><span style=\"font-weight: 400\">As you have already seen in the previous tutorials, TensorFlow isn&#8217;t just for machine learning. Here, in this tutorial, you are presented with an example of using TensorFlow for simulating the behaviour of a\u00a0<\/span><strong>partial differential equation<\/strong><span style=\"font-weight: 400\">. <\/span><\/p>\n<p><span style=\"font-weight: 400\">You will be simulating the surface of the square pond as a few raindrops land on it.<\/span><\/p>\n<h2><span style=\"font-weight: 400\">Setup for Partial Differentiation Equation<\/span><\/h2>\n<p><span style=\"font-weight: 400\">Some necessary imports in TensorFlow PDE:<\/span><\/p>\n<pre class=\"EnlighterJSRAW\">#Import libraries for simulation\r\nimport tensorflow as tf\r\nimport numpy as np\r\n#Imports for visualization\r\nimport PIL.Image\r\nfrom io import BytesIO\r\nfrom IPython.display import clear_output, Image, display\r\n<\/pre>\n<p>Function for displaying the pond&#8217;s surface as an image:<\/p>\n<pre class=\"EnlighterJSRAW\">def DisplayArray(a, fmt='jpeg', rng=[0,1]):\r\n  \"\"\"Display an array as a picture.\"\"\"\r\n  a = (a - rng[0])\/float(rng[1] - rng[0])*255\r\n  a = np.uint8(np.clip(a, 0, 255))\r\n  f = BytesIO()\r\n  PIL.Image.fromarray(a).save(f, fmt)\r\n  clear_output(wait = True)\r\n  display(Image(data=f.getvalue()))\r\n<\/pre>\n<p>Again, you will be making use of an interactive session, but it is not compulsory.<br \/>\n<strong>sess = tf.InteractiveSession()<\/strong><\/p>\n<h2><span style=\"font-weight: 400\">Convenience Functions in TensorFlow PDE<\/span><\/h2>\n<p><span style=\"font-weight: 400\">def<\/span><span style=\"font-weight: 400\"> make_kernel(a):<\/span><\/p>\n<pre class=\"EnlighterJSRAW\">\"\"\"Transform a 2D array into a convolution kernel\"\"\"\r\n  a = np.asarray(a)\r\n  a = a.reshape(list(a.shape) + [1,1])\r\n  return tf.constant(a, dtype=1)<\/pre>\n<p><span style=\"font-weight: 400\">def<\/span><span style=\"font-weight: 400\"> simple_conv(x, k):<\/span><\/p>\n<pre class=\"EnlighterJSRAW\">\"\"\"A simplified 2D convolution operation\"\"\"\r\n x = tf.expand_dims(tf.expand_dims(x, 0), -1)\r\n y = tf.nn.depthwise_conv2d(x, k, [1, 1, 1, 1], padding='SAME')\r\n return y[0, :, :, 0]\r\n<\/pre>\n<p><span style=\"font-weight: 400\">def<\/span><span style=\"font-weight: 400\"> laplace(x):<\/span><\/p>\n<pre class=\"EnlighterJSRAW\">\"\"\"Compute the 2D laplacian of an array\"\"\"\r\n  laplace_k = make_kernel([[0.5, 1.0, 0.5],\r\n                           [1.0, -6., 1.0],\r\n                           [0.5, 1.0, 0.5]])\r\n  return simple_conv(x, laplace_k)<\/pre>\n<h2>Defining the Partial Differential Equations<\/h2>\n<p><span style=\"font-weight: 400\">The pond is a perfect 500 x 500 square.<\/span><br \/>\n<span style=\"font-weight: 400\">N = <\/span><span style=\"font-weight: 400\">500<\/span><br \/>\n<span style=\"font-weight: 400\">Hitting the pond with some raindrops:<\/span><\/p>\n<pre class=\"EnlighterJSRAW\"># Initial Conditions -- some rain drops hit a pond\r\n# Set everything to zero\r\nu_init = np.zeros([N, N], dtype=np.float32)\r\nut_init = np.zeros([N, N], dtype=np.float32)\r\n# Some rain drops hit a pond at random points\r\nfor n in range(40):\r\n  a,b = np.random.randint(0, N, 2)\r\n  u_init[a,b] = np.random.uniform()\r\nDisplayArray(u_init, rng=[-0.1, 0.1])<\/pre>\n<div id=\"attachment_16926\" style=\"width: 510px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/05\/Raindrops.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-16926\" class=\"wp-image-16926 size-full\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/05\/Raindrops.jpg\" alt=\"TensorFlow PDE\" width=\"500\" height=\"500\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/05\/Raindrops.jpg 500w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/05\/Raindrops-150x150.jpg 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/05\/Raindrops-300x300.jpg 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/05\/Raindrops-100x100.jpg 100w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><p id=\"caption-attachment-16926\" class=\"wp-caption-text\">TensorFlow PDE- Defining the Partial Differentiation Equation<\/p><\/div>\n<p><span style=\"font-weight: 400\">Specifying the details of the PDE:<\/span><\/p>\n<pre class=\"EnlighterJSRAW\"># Parameters:\r\n# eps -- time resolution\r\n# damping -- wave damping\r\neps = tf.placeholder(tf.float32, shape=())\r\ndamping = tf.placeholder(tf.float32, shape=())\r\n# Create variables for simulation state\r\nU  = tf.Variable(u_init)\r\nUt = tf.Variable(ut_init)\r\n# Discretized PDE update rules\r\nU_ = U + eps * Ut\r\nUt_ = Ut + eps * (laplace(U) - damping * Ut)\r\n# Operation to update the state\r\nstep = tf.group(\r\n  U.assign(U_),\r\n  Ut.assign(Ut_))<\/pre>\n<p>&nbsp;<\/p>\n<h2><span style=\"font-weight: 400\">Simulation in PDE<\/span><\/h2>\n<p><span style=\"font-weight: 400\">Using a simple for loop, running the time forward:<\/span><\/p>\n<pre class=\"EnlighterJSRAW\"># Initialize state to initial conditions\r\ntf.global_variables_initializer().run()\r\n# Run 1000 steps of PDE\r\nfor i in range(1000):\r\n  # Step simulation\r\n  step.run({eps: 0.03, damping: 0.04})\r\n  DisplayArray(U.eval(), rng=[-0.1, 0.1])\r\n<\/pre>\n<div id=\"attachment_16927\" style=\"width: 510px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/05\/ripples.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-16927\" class=\"wp-image-16927 size-full\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/05\/ripples.jpg\" alt=\"TensorFlow PDE\" width=\"500\" height=\"500\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/05\/ripples.jpg 500w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/05\/ripples-150x150.jpg 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/05\/ripples-300x300.jpg 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/05\/ripples-100x100.jpg 100w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><p id=\"caption-attachment-16927\" class=\"wp-caption-text\">TensorFlow PDE- Simulation in PDE<\/p><\/div>\n<p><span style=\"font-weight: 400\">You\u2019ll get an image like this representing the ripples.<\/span><br \/>\nSo, this was all about PDE (Partial Differentiation Equation) using machine learning in TensorFlow. Hope you like our explanation.<\/p>\n<h2><span style=\"font-weight: 400\">Conclusion<\/span><\/h2>\n<p><span style=\"font-weight: 400\">Hence, in this TensorFlow PDE tutorial, we saw Partial Differential Equations can be implemented using other libraries as well including Theano and Numpy and as shown here, using TensorFlow of course. <\/span><\/p>\n<p><span style=\"font-weight: 400\">There are many other mathematical simulations that can be represented using this machine learning library such as complex calculus and different kinds of probability distributions. Next up, is <strong>embedding in TensorFlow<\/strong>. <\/span><\/p>\n<p><span style=\"font-weight: 400\">Furthermore, if you have any query regarding PDE in TensorFlow, feel free to ask through the comment section.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today is another tutorial of applied mathematics with TensorFlow, where you\u2019ll be learning how to solve partial differential equations (PDE) using the machine learning library. Moreover, in this TensorFlow PDE tutorial, we will be&#46;&#46;&#46;<\/p>\n","protected":false},"author":6,"featured_media":16936,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[73],"tags":[9419,9451,12771,12899,14592,14608],"class_list":["post-16915","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tensorflow","tag-partial-differentiation-in-tensorflow","tag-pde-in-tensorflow","tag-set-up-for-pde","tag-simulating-in-tensorflow","tag-tensorflow-pde","tag-tensorflow-tutorial"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Setup - TensorFlow PDE (Partial Differentiation Equation) - DataFlair<\/title>\n<meta name=\"description\" content=\"TensorFlow PDE,PDE set up &amp;Convenience Functions,Defining Partial Differential Equation,Simulation in PDE,solve differential equation by machine learning\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/data-flair.training\/blogs\/tensorflow-pde\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Setup - TensorFlow PDE (Partial Differentiation Equation) - DataFlair\" \/>\n<meta property=\"og:description\" content=\"TensorFlow PDE,PDE set up &amp;Convenience Functions,Defining Partial Differential Equation,Simulation in PDE,solve differential equation by machine learning\" \/>\n<meta property=\"og:url\" content=\"https:\/\/data-flair.training\/blogs\/tensorflow-pde\/\" \/>\n<meta property=\"og:site_name\" content=\"DataFlair\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DataFlairWS\/\" \/>\n<meta property=\"article:published_time\" content=\"2018-06-07T04:00:21+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-05-14T05:30:13+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/05\/TensorFlow-PDE-Partial-Differentiation-Equation-01.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"DataFlair Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:site\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"DataFlair Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Setup - TensorFlow PDE (Partial Differentiation Equation) - DataFlair","description":"TensorFlow PDE,PDE set up &Convenience Functions,Defining Partial Differential Equation,Simulation in PDE,solve differential equation by machine learning","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:\/\/data-flair.training\/blogs\/tensorflow-pde\/","og_locale":"en_US","og_type":"article","og_title":"Setup - TensorFlow PDE (Partial Differentiation Equation) - DataFlair","og_description":"TensorFlow PDE,PDE set up &Convenience Functions,Defining Partial Differential Equation,Simulation in PDE,solve differential equation by machine learning","og_url":"https:\/\/data-flair.training\/blogs\/tensorflow-pde\/","og_site_name":"DataFlair","article_publisher":"https:\/\/www.facebook.com\/DataFlairWS\/","article_published_time":"2018-06-07T04:00:21+00:00","article_modified_time":"2021-05-14T05:30:13+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/05\/TensorFlow-PDE-Partial-Differentiation-Equation-01.jpg","type":"image\/jpeg"}],"author":"DataFlair Team","twitter_card":"summary_large_image","twitter_creator":"@DataFlairWS","twitter_site":"@DataFlairWS","twitter_misc":{"Written by":"DataFlair Team","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/data-flair.training\/blogs\/tensorflow-pde\/#article","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/tensorflow-pde\/"},"author":{"name":"DataFlair Team","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/2c58ecb4f73a39f0ef993f1ddfcd7b89"},"headline":"Setup &#8211; TensorFlow PDE (Partial Differentiation Equation)","datePublished":"2018-06-07T04:00:21+00:00","dateModified":"2021-05-14T05:30:13+00:00","mainEntityOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/tensorflow-pde\/"},"wordCount":409,"commentCount":2,"publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/tensorflow-pde\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/05\/TensorFlow-PDE-Partial-Differentiation-Equation-01.jpg","keywords":["partial differentiation in TensorFlow","PDE in TensorFlow","set up for PDE","Simulating in TensorFlow","TensorFlow PDE","Tensorflow Tutorial"],"articleSection":["Tensorflow Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/data-flair.training\/blogs\/tensorflow-pde\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/data-flair.training\/blogs\/tensorflow-pde\/","url":"https:\/\/data-flair.training\/blogs\/tensorflow-pde\/","name":"Setup - TensorFlow PDE (Partial Differentiation Equation) - DataFlair","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/#website"},"primaryImageOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/tensorflow-pde\/#primaryimage"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/tensorflow-pde\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/05\/TensorFlow-PDE-Partial-Differentiation-Equation-01.jpg","datePublished":"2018-06-07T04:00:21+00:00","dateModified":"2021-05-14T05:30:13+00:00","description":"TensorFlow PDE,PDE set up &Convenience Functions,Defining Partial Differential Equation,Simulation in PDE,solve differential equation by machine learning","breadcrumb":{"@id":"https:\/\/data-flair.training\/blogs\/tensorflow-pde\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/data-flair.training\/blogs\/tensorflow-pde\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/tensorflow-pde\/#primaryimage","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/05\/TensorFlow-PDE-Partial-Differentiation-Equation-01.jpg","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/05\/TensorFlow-PDE-Partial-Differentiation-Equation-01.jpg","width":1200,"height":628,"caption":"TensorFlow PDE"},{"@type":"BreadcrumbList","@id":"https:\/\/data-flair.training\/blogs\/tensorflow-pde\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog Home","item":"https:\/\/data-flair.training\/blogs\/"},{"@type":"ListItem","position":2,"name":"Tensorflow Tutorials","item":"https:\/\/data-flair.training\/blogs\/category\/tensorflow\/"},{"@type":"ListItem","position":3,"name":"Setup &#8211; TensorFlow PDE (Partial Differentiation Equation)"}]},{"@type":"WebSite","@id":"https:\/\/data-flair.training\/blogs\/#website","url":"https:\/\/data-flair.training\/blogs\/","name":"DataFlair","description":"Learn Today. Lead Tomorrow.","publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/data-flair.training\/blogs\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/data-flair.training\/blogs\/#organization","name":"DataFlair","url":"https:\/\/data-flair.training\/blogs\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","width":106,"height":48,"caption":"DataFlair"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DataFlairWS\/","https:\/\/x.com\/DataFlairWS","https:\/\/www.linkedin.com\/company\/dataflair-web-services-pvt-ltd\/","https:\/\/www.youtube.com\/user\/DataFlairWS"]},{"@type":"Person","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/2c58ecb4f73a39f0ef993f1ddfcd7b89","name":"DataFlair Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/1ce4a0e3e542444fc73bbebf83e89e8b73e2d95ccb1fcee64da9945f078b97c5?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1ce4a0e3e542444fc73bbebf83e89e8b73e2d95ccb1fcee64da9945f078b97c5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1ce4a0e3e542444fc73bbebf83e89e8b73e2d95ccb1fcee64da9945f078b97c5?s=96&d=mm&r=g","caption":"DataFlair Team"},"description":"The DataFlair Team provides industry-driven content on programming, Java, Python, C++, DSA, AI, ML, data Science, Android, Flutter, MERN, Web Development, and technology. Our expert educators focus on delivering value-packed, easy-to-follow resources for tech enthusiasts and professionals.","url":"https:\/\/data-flair.training\/blogs\/author\/dfteam2\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/16915","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/comments?post=16915"}],"version-history":[{"count":6,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/16915\/revisions"}],"predecessor-version":[{"id":94507,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/16915\/revisions\/94507"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media\/16936"}],"wp:attachment":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media?parent=16915"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/categories?post=16915"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/tags?post=16915"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}