{"id":32777,"date":"2016-02-19T16:19:15","date_gmt":"2016-02-19T13:19:15","guid":{"rendered":"https:\/\/www.altoros.com\/blog\/?p=32777"},"modified":"2019-06-08T05:43:23","modified_gmt":"2019-06-08T02:43:23","slug":"basic-concepts-and-manipulations-with-tensorflow","status":"publish","type":"post","link":"https:\/\/www.altoros.com\/blog\/basic-concepts-and-manipulations-with-tensorflow\/","title":{"rendered":"Basic Concepts and Manipulations with TensorFlow"},"content":{"rendered":"<p>TensorFlow is designed to make <a href=\"https:\/\/www.altoros.com\/research-papers\/performance-of-distributed-tensorflow-a-multi-node-and-multi-gpu-configuration\/\">distributed<\/a> machine and deep learning easy for everyone, but using it does require understanding of some general principles and algorithms. In this tutorial, we take a closer look at the library\u2019s main concepts and try to do some basic <a href=\"https:\/\/www.altoros.com\/blog\/logical-graphs-native-control-flow-operations-in-tensorflow\/\">operations<\/a> to get you started.<\/p>\n<p>&nbsp;<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_79_2 counter-hierarchy ez-toc-counter ez-toc-transparent ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.altoros.com\/blog\/basic-concepts-and-manipulations-with-tensorflow\/#Understanding_TensorFlow\" >Understanding TensorFlow<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.altoros.com\/blog\/basic-concepts-and-manipulations-with-tensorflow\/#Basic_operations\" >Basic operations<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.altoros.com\/blog\/basic-concepts-and-manipulations-with-tensorflow\/#More_on_TensorFlow\" >More on TensorFlow?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.altoros.com\/blog\/basic-concepts-and-manipulations-with-tensorflow\/#Further_reading\" >Further reading<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"Understanding_TensorFlow\"><\/span>Understanding TensorFlow<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>TensorFlow is based on the concept of the <a href=\"https:\/\/www.altoros.com\/blog\/visualizing-tensorflow-graphs-with-tensorboard\/\">data flow graph<\/a>. The nodes of this graph represent operations. The edges are tensors. In terms of TensorFlow, a tensor is just a multi-dimensional array. Each data flow graph computation runs within a session on a CPU or GPU.<\/p>\n<p>Taking into account the popularity of Python among data scientists, TensorFlow exposes a Python-based API, where tensors are NumPy <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">ndarray<\/code> entities. On the low level, the library relies on highly optimized C++ code and supports a native C and C++ API. Below, you can see an example of a TensorFlow graph (the image is taken from <a href=\"https:\/\/www.tensorflow.org\/\" rel=\"noopener noreferrer\" target=\"_blank\">tensorflow.org<\/a>).<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/02\/tensors_flowing-v1.gif\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/02\/tensors_flowing-v1.gif\" alt=\"\" width=\"252\" height=\"448\" class=\"aligncenter size-full wp-image-32779\" \/><\/a><\/center><\/p>\n<p>So, the main TensorFlow entities are:<\/p>\n<ol>\n<li style=\"padding-bottom: 6px;\"><strong>Graph.<\/strong> As we mentioned, TensorFlow computations can be represented as data flow graphs. Each graph is built as a set of <a href=\"https:\/\/www.tensorflow.org\/api_docs\/python\/framework.html#Operation\" target=\"_blank\" rel=\"noopener noreferrer\">Operation<\/a> objects.<\/li>\n<li style=\"padding-bottom: 6px;\"><strong>Operation.<\/strong> Each Operation object represents a graph node, which is a unit of computation (addition, multiplication, or something more complex) performed on a tensor flow. It takes tensors as input and produces a tensor as output.<\/li>\n<li style=\"padding-bottom: 6px;\"><strong>Tensor.<\/strong> Tensors can be represented as edges of a data flow graph. They do not represent or hold any particular value produced by an application of an operation. Instead, they define the type of this value and the means by which this value should be calculated during the session.<\/li>\n<li><strong>Session.<\/strong> This is an entity that represents an environment for running calculations on the data flow graph.<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Basic_operations\"><\/span>Basic operations<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Now, it\u2019s time to try TensorFlow in action. Here are some basic computation examples that help to better understand the main concepts.<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\"># Import TensorFlow.\r\nimport tensorflow as tf\r\n\r\n# Basic operations with some constants\r\n\r\n# Create constants a and b\r\n\r\n# Build a data flow graph\r\na = tf.constant(10)\r\nb = tf.constant(5)\r\n\r\n# Create a session to evaluate the symbolic expression\r\nsess = tf.Session() \r\n\r\n# Trigger an evaluation of the data flow graph.\r\nprint &quot;Constants addition: %i&quot; % sess.run(a + b)\r\nprint &quot;Constants  multiplication: %i&quot; % sess.run(a * b)\r\n\r\n# Close the session\r\nsess.close()<\/pre>\n<p>Output:<\/p>\n<pre style=\"padding-left: 30px;\">Constants addition: 15\r\nConstants multiplication: 50<\/pre>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\"># Perform the same operations on constant matrices\r\n\r\n# Build a dataflow graph\r\nc = tf.constant(&#x5B;&#x5B;2.0, 2.0], &#x5B;5.0, 4.0]])\r\nd = tf.constant(&#x5B;&#x5B;1.0, 2.0], &#x5B;1.0, 2.0]])\r\ne = tf.matmul(c, d)\r\n\r\n# Construct a `Session` to execute the graph\r\nsess = tf.Session()\r\n\r\n# Execute the graph and print the resulting matrix\r\nprint sess.run(e)\r\n\r\n# Close the session\r\nsess.close()<\/pre>\n<p>Output:<\/p>\n<pre style=\"padding-left: 30px;\">[[  4.   8.]\r\n[  9.  18.]]<\/pre>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\"># Operations with variables as graph input flow\r\na = tf.placeholder(tf.types.int16)\r\nb = tf.placeholder(tf.types.int16)\r\n\r\n# Apply some operations\r\nadd = tf.add(a, b)\r\nmul = tf.mul(a, b)\r\n\r\n# Construct a `Session` to execute the graph.\r\nsess = tf.Session()\r\n\r\n# Execute the graph with variable input\r\nprint &quot;Addition input variables: %i&quot; % sess.run(add, feed_dict={a: 5, b: 8})\r\nprint &quot;Multiplication input variables: %i&quot; % sess.run(mul, feed_dict={a: 5, b: 8})\r\n\r\n# Close the session\r\nsess.close()<\/pre>\n<p>Output:<\/p>\n<pre style=\"padding-left: 30px;\">Addition input variables: 13\r\nMultiplication input variables: 40<\/pre>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\"># Operations with matrices as graph input flow\r\na = tf.placeholder(tf.types.float32, shape=(2, 4))\r\nb = tf.placeholder(tf.types.float32, shape=(4, 2))\r\n\r\n# Apply multiplication\r\nmul = tf.matmul(a, b)\r\n\r\n# Construct a `Session` to execute the graph\r\nsess = tf.Session()\r\n\r\n# Import Numpy\r\nimport numpy as np\r\n\r\n# Create matrices with defined dimensions and fill them with random values\r\nrand_array_a = np.random.rand(2, 4)\r\nrand_array_b = np.random.rand(4, 2)\r\n\r\n# Execute the graph and print the resulting matrix\r\nprint sess.run(mul, feed_dict={a: rand_array_a, b: rand_array_b})\r\n\r\n# Close the session\r\nsess.close()<\/pre>\n<p>Output:<\/p>\n<pre style=\"padding-left: 30px;\">[[ 1.32082355  0.97404259]\r\n[ 1.06961715  1.15667367]]<\/pre>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"More_on_TensorFlow\"><\/span>More on TensorFlow?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>In our other tutorials, we cover more advanced topics\u2014such as training a model for different types of regression (<a href=\"https:\/\/www.altoros.com\/blog\/using-linear-regression-in-tensorflow\/\">linear<\/a> and <a href=\"https:\/\/www.altoros.com\/blog\/using-logistic-and-softmax-regression-with-tensorflow\/\">logistic\/softmax<\/a> regressions), <a href=\"https:\/\/www.altoros.com\/blog\/using-k-means-clustering-in-tensorflow\/\"><em>k<\/em>-means<\/a> clustering, etc.<\/p>\n<p>You can also download our <a href=\"https:\/\/www.altoros.com\/visuals\/tensorflow-cheat-sheet\/\">TensorFlow cheat sheet<\/a> to learn how to get started with the library or attend our <a href=\"https:\/\/www.altoros.com\/training\/artificial-intelligence\" rel=\"noopener noreferrer\" target=\"_blank\">ML training<\/a> in your city.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Further_reading\"><\/span>Further reading<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/logical-graphs-native-control-flow-operations-in-tensorflow\/\">Logical Graphs: Native Control Flow Operations in TensorFlow<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/visualizing-tensorflow-graphs-with-tensorboard\/\">Visualizing TensorFlow Graphs with TensorBoard<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/research-papers\/performance-of-deep-learning-frameworks-caffe-deeplearning4j-tensorflow-theano-and-torch\/\">Performance Benchmark: Caffe, Deeplearning4j, TensorFlow, Theano, and Torch<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<hr\/>\n<p><center><small>The tutorial was created by Sergey Kovalev; edited and published by Sophia Turol and <a href=\"https:\/\/www.altoros.com\/blog\/author\/alex\/\">Alex Khizhniak<\/a>.<\/small><\/center><\/p>\n","protected":false},"excerpt":{"rendered":"<p>TensorFlow is designed to make distributed machine and deep learning easy for everyone, but using it does require understanding of some general principles and algorithms. In this tutorial, we take a closer look at the library\u2019s main concepts and try to do some basic operations to get you started.<\/p>\n<p>&nbsp;<\/p>\n<p>Understanding TensorFlow<\/p>\n<p>TensorFlow [&#8230;]<\/p>\n","protected":false},"author":122,"featured_media":32968,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":"","_links_to":"","_links_to_target":""},"categories":[214],"tags":[748,749],"class_list":["post-32777","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials","tag-machine-learning","tag-tensorflow"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Basic Concepts and Manipulations with TensorFlow | Altoros<\/title>\n<meta name=\"description\" content=\"This blog post overviews the core TensorFlow entities\u2014a graph, an operation, a tensor, and a session\u2014to exemplify common computations made by the library.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.altoros.com\/blog\/basic-concepts-and-manipulations-with-tensorflow\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Basic Concepts and Manipulations with TensorFlow | Altoros\" \/>\n<meta property=\"og:description\" content=\"TensorFlow is designed to make distributed machine and deep learning easy for everyone, but using it does require understanding of some general principles and algorithms. In this tutorial, we take a closer look at the library\u2019s main concepts and try to do some basic operations to get you started. &nbsp; Understanding TensorFlow TensorFlow [...]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.altoros.com\/blog\/basic-concepts-and-manipulations-with-tensorflow\/\" \/>\n<meta property=\"og:site_name\" content=\"Altoros\" \/>\n<meta property=\"article:published_time\" content=\"2016-02-19T13:19:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-06-08T02:43:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/01\/tensorflow-logo-cropped.png\" \/>\n\t<meta property=\"og:image:width\" content=\"400\" \/>\n\t<meta property=\"og:image:height\" content=\"298\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Sergey Kovalev\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sergey Kovalev\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.altoros.com\/blog\/basic-concepts-and-manipulations-with-tensorflow\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/basic-concepts-and-manipulations-with-tensorflow\/\",\"name\":\"Basic Concepts and Manipulations with TensorFlow | Altoros\",\"isPartOf\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/basic-concepts-and-manipulations-with-tensorflow\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/basic-concepts-and-manipulations-with-tensorflow\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/01\/tensorflow-logo-cropped.png\",\"datePublished\":\"2016-02-19T13:19:15+00:00\",\"dateModified\":\"2019-06-08T02:43:23+00:00\",\"author\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/7bb3c35a84eeaa32af69b53773e7fe1a\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/basic-concepts-and-manipulations-with-tensorflow\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.altoros.com\/blog\/basic-concepts-and-manipulations-with-tensorflow\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/basic-concepts-and-manipulations-with-tensorflow\/#primaryimage\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/01\/tensorflow-logo-cropped.png\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/01\/tensorflow-logo-cropped.png\",\"width\":400,\"height\":298},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.altoros.com\/blog\/basic-concepts-and-manipulations-with-tensorflow\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.altoros.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Basic Concepts and Manipulations with TensorFlow\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\",\"url\":\"https:\/\/www.altoros.com\/blog\/\",\"name\":\"Altoros\",\"description\":\"Insight\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.altoros.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/7bb3c35a84eeaa32af69b53773e7fe1a\",\"name\":\"Sergey Kovalev\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/01\/3faf706-150x150.jpg\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/01\/3faf706-150x150.jpg\",\"caption\":\"Sergey Kovalev\"},\"description\":\"Sergey Kovalev is a senior software engineer with extensive experience in high-load application development, big data and NoSQL solutions, cloud computing, data warehousing, and machine learning. He has strong expertise in back-end engineering, applying the best approaches for development, architecture design, and scaling. He has solid background in software development practices, such as the Agile methodology, prototyping, patterns, refactoring, and code review. Now, Sergey\u2019s main interest lies in big data distributed computing and machine learning.\",\"url\":\"https:\/\/www.altoros.com\/blog\/author\/s-kovalev\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Basic Concepts and Manipulations with TensorFlow | Altoros","description":"This blog post overviews the core TensorFlow entities\u2014a graph, an operation, a tensor, and a session\u2014to exemplify common computations made by the library.","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:\/\/www.altoros.com\/blog\/basic-concepts-and-manipulations-with-tensorflow\/","og_locale":"en_US","og_type":"article","og_title":"Basic Concepts and Manipulations with TensorFlow | Altoros","og_description":"TensorFlow is designed to make distributed machine and deep learning easy for everyone, but using it does require understanding of some general principles and algorithms. In this tutorial, we take a closer look at the library\u2019s main concepts and try to do some basic operations to get you started. &nbsp; Understanding TensorFlow TensorFlow [...]","og_url":"https:\/\/www.altoros.com\/blog\/basic-concepts-and-manipulations-with-tensorflow\/","og_site_name":"Altoros","article_published_time":"2016-02-19T13:19:15+00:00","article_modified_time":"2019-06-08T02:43:23+00:00","og_image":[{"width":400,"height":298,"url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/01\/tensorflow-logo-cropped.png","type":"image\/png"}],"author":"Sergey Kovalev","twitter_misc":{"Written by":"Sergey Kovalev","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.altoros.com\/blog\/basic-concepts-and-manipulations-with-tensorflow\/","url":"https:\/\/www.altoros.com\/blog\/basic-concepts-and-manipulations-with-tensorflow\/","name":"Basic Concepts and Manipulations with TensorFlow | Altoros","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/basic-concepts-and-manipulations-with-tensorflow\/#primaryimage"},"image":{"@id":"https:\/\/www.altoros.com\/blog\/basic-concepts-and-manipulations-with-tensorflow\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/01\/tensorflow-logo-cropped.png","datePublished":"2016-02-19T13:19:15+00:00","dateModified":"2019-06-08T02:43:23+00:00","author":{"@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/7bb3c35a84eeaa32af69b53773e7fe1a"},"breadcrumb":{"@id":"https:\/\/www.altoros.com\/blog\/basic-concepts-and-manipulations-with-tensorflow\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.altoros.com\/blog\/basic-concepts-and-manipulations-with-tensorflow\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/basic-concepts-and-manipulations-with-tensorflow\/#primaryimage","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/01\/tensorflow-logo-cropped.png","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/01\/tensorflow-logo-cropped.png","width":400,"height":298},{"@type":"BreadcrumbList","@id":"https:\/\/www.altoros.com\/blog\/basic-concepts-and-manipulations-with-tensorflow\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.altoros.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Basic Concepts and Manipulations with TensorFlow"}]},{"@type":"WebSite","@id":"https:\/\/www.altoros.com\/blog\/#website","url":"https:\/\/www.altoros.com\/blog\/","name":"Altoros","description":"Insight","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.altoros.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/7bb3c35a84eeaa32af69b53773e7fe1a","name":"Sergey Kovalev","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/01\/3faf706-150x150.jpg","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/01\/3faf706-150x150.jpg","caption":"Sergey Kovalev"},"description":"Sergey Kovalev is a senior software engineer with extensive experience in high-load application development, big data and NoSQL solutions, cloud computing, data warehousing, and machine learning. He has strong expertise in back-end engineering, applying the best approaches for development, architecture design, and scaling. He has solid background in software development practices, such as the Agile methodology, prototyping, patterns, refactoring, and code review. Now, Sergey\u2019s main interest lies in big data distributed computing and machine learning.","url":"https:\/\/www.altoros.com\/blog\/author\/s-kovalev\/"}]}},"_links":{"self":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/32777","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/users\/122"}],"replies":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/comments?post=32777"}],"version-history":[{"count":17,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/32777\/revisions"}],"predecessor-version":[{"id":44049,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/32777\/revisions\/44049"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media\/32968"}],"wp:attachment":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media?parent=32777"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/categories?post=32777"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/tags?post=32777"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}