{"id":28375,"date":"2016-12-14T21:48:46","date_gmt":"2016-12-14T18:48:46","guid":{"rendered":"https:\/\/www.altoros.com\/blog\/?p=28375"},"modified":"2019-05-07T18:24:44","modified_gmt":"2019-05-07T15:24:44","slug":"the-diversity-of-tensorflow-wrappers-gpus-generative-adversarial-networks-etc","status":"publish","type":"post","link":"https:\/\/www.altoros.com\/blog\/the-diversity-of-tensorflow-wrappers-gpus-generative-adversarial-networks-etc\/","title":{"rendered":"The Diversity of TensorFlow: Wrappers, GPUs, Generative Adversarial Networks, etc."},"content":{"rendered":"<p>At the <a href=\"https:\/\/www.meetup.com\/TensorFlow-Paris\/events\/235346538\/\" target=\"_blank\" rel=\"noopener noreferrer\">recent meetup<\/a> in Paris, attendees learnt a number of TensorFlow use cases and related deep learning tools, as well as got familiar with <a href=\"https:\/\/en.wikipedia.org\/wiki\/Generative_adversarial_networks\" target=\"_blank\" rel=\"noopener noreferrer\">generative adversarial networks<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_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\/the-diversity-of-tensorflow-wrappers-gpus-generative-adversarial-networks-etc\/#Styling_images_and_sorting_cucumbers_with_TensorFlow\" >Styling images and sorting cucumbers with 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\/the-diversity-of-tensorflow-wrappers-gpus-generative-adversarial-networks-etc\/#Going_convolutional_with_generative_adversarial_networks\" >Going convolutional with generative adversarial networks<\/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\/the-diversity-of-tensorflow-wrappers-gpus-generative-adversarial-networks-etc\/#Want_details_Watch_the_video\" >Want details? Watch the video!<\/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\/the-diversity-of-tensorflow-wrappers-gpus-generative-adversarial-networks-etc\/#Further_reading\" >Further reading<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.altoros.com\/blog\/the-diversity-of-tensorflow-wrappers-gpus-generative-adversarial-networks-etc\/#About_the_experts\" >About the experts<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"Styling_images_and_sorting_cucumbers_with_TensorFlow\"><\/span>Styling images and sorting cucumbers with TensorFlow<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Starting his session with an overview of TensorFlow\u2019s guts, <a href=\"https:\/\/www.linkedin.com\/in\/jofaichow\" target=\"_blank\" rel=\"noopener noreferrer\">Jo-fai Chow<\/a> of H2O.ai enumerated a bunch of TensorFlow wrappers available:<\/p>\n<ul>\n<li><em><a href=\"https:\/\/github.com\/tensorflow\/tensorflow\/tree\/master\/tensorflow\/contrib\/learn\/python\/learn\" target=\"_blank\" rel=\"noopener noreferrer\">TFLearn<\/a><\/em> with its simplified interface <\/li>\n<li><em><a href=\"https:\/\/keras.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">Keras<\/a><\/em> that can run both on top of TensorFlow and Theano<\/li>\n<li><em><a href=\"https:\/\/github.com\/somaticio\/tensorflow.rb\" target=\"_blank\" rel=\"noopener noreferrer\">TensorFlow.rb<\/a><\/em>, a Ruby wrapper<\/li>\n<li><em><a href=\"https:\/\/github.com\/malmaud\/TensorFlow.jl\" target=\"_blank\" rel=\"noopener noreferrer\">TensorFlow.jl<\/a><\/em>, a Julia wrapper<em><\/em><\/li>\n<li><em><a href=\"https:\/\/github.com\/rstudio\/tensorflow\" target=\"_blank\" rel=\"noopener noreferrer\">TensorFlow for R<\/a><\/em>, an R wrapper<\/li>\n<\/ul>\n<p>In addition to there options, Jo-fai mentioned that it is even possible to train a neural network <a href=\"http:\/\/playground.tensorflow.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">right in a browser<\/a>. He then exemplified a number of scenarios where the library can be applied, including quite exotic use cases:<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/anishathalye\/neural-style\" target=\"_blank\" rel=\"noopener noreferrer\">neural style<\/a>\u2014a technique that allows for training a deep neural network to separate an artistic style from the image structure and combine it with the style \/ structure of another image<\/li>\n<li>building <a href=\"https:\/\/cloud.google.com\/blog\/products\/gcp\/how-a-japanese-cucumber-farmer-is-using-deep-learning-and-tensorflow\" target=\"_blank\" rel=\"noopener noreferrer\">a system<\/a> that automates the process of sorting cucumbers<\/li>\n<\/ul>\n<p><center><iframe loading=\"lazy\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/4HCE1P-m1l8\" frameborder=\"0\" allowfullscreen><\/iframe><\/center><\/p>\n<blockquote><p><em>\u201cTensorFlow democratizes the power of deep learning.\u201d \u2014Jo-fai Chow, H2O.io<\/em><\/p><\/blockquote>\n<p>After that, the speaker gave an insight into the <a href=\"https:\/\/h2o.ai\/\" target=\"_blank\" rel=\"noopener noreferrer\">H2O platform<\/a>\u2014built by the company he works for as a data scientist. Using a wide mix of artificial intelligence and machine learning tools, the platforms enables the development of apps for predictive maintenance, fraud detection, auditing, credit scoring, user-based insurance, etc.<\/p>\n<p>The company\u2019s product catalog also features <a href=\"https:\/\/github.com\/h2oai\/deepwater\" target=\"_blank\" rel=\"noopener noreferrer\">Deep Water<\/a>, an open-source GPU-optimized solution on top of H2O.io. Combining the power of <a href=\"https:\/\/www.altoros.com\/research-papers\/performance-of-deep-learning-frameworks-caffe-deeplearning4j-tensorflow-theano-and-torch\/\">a few popular machine learning libraries<\/a> (TensorFlow, Caffe, and MXNet), the solution offers a GPU-enabled playground for <a href=\"https:\/\/www.altoros.com\/research-papers\/performance-of-distributed-tensorflow-a-multi-node-and-multi-gpu-configuration\/\">distributed deep learning<\/a>. It enables developers to train user-defined or pre-defined deep learning models for <a href=\"https:\/\/www.altoros.com\/blog\/using-convolutional-neural-networks-and-tensorflow-for-image-classification\/\">image<\/a>\/video\/sound\/<a href=\"https:\/\/www.altoros.com\/blog\/analyzing-text-and-generating-content-with-neural-networks-and-tensorflow\/\">text<\/a> classification from Flow, R, Python, Java, Scala, or REST API. With GPU, large-scale neural networks can be engaged to process terabytes of data.<\/p>\n<p>Chech out Jo-fai\u2019s presentation to see how it works. Here&#8217;s <a href=\"https:\/\/github.com\/h2oai\/h2o-meetups\/tree\/master\/2016_11_30_TensorFlow_Paris\" target=\"_blank\" rel=\"noopener noreferrer\">the code<\/a> used for the demo of Deep Water and Iris.<\/p>\n<p><center><iframe loading=\"lazy\" src=\"https:\/\/www.slideshare.net\/slideshow\/embed_code\/key\/ukKTdqm7aJ4bNL\" width=\"427\" height=\"356\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" style=\"border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;\" allowfullscreen><\/iframe><\/center><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Going_convolutional_with_generative_adversarial_networks\"><\/span>Going convolutional with generative adversarial networks<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><a href=\"https:\/\/www.linkedin.com\/in\/julien-launay-400a7512a\/en\" target=\"_blank\" rel=\"noopener noreferrer\">Julien Launay<\/a> of Ecole Normale Superieure focused on using <a href=\"https:\/\/arxiv.org\/abs\/1406.2661\" target=\"_blank\" rel=\"noopener noreferrer\">generative adversarial networks<\/a> (GAN) and TensorFlow to replicate and learn more about fracture patterns. (We have previously <a href=\"https:\/\/www.altoros.com\/blog\/analyzing-text-and-generating-content-with-neural-networks-and-tensorflow\/\" target=\"_blank\" rel=\"noopener noreferrer\">written<\/a> about using GANs for generating content.)<\/p>\n<p>After explaining how to train a GAN, Julien listed the issues one may face when working with these networks:<\/p>\n<ul>\n<li>hard to keep the discriminant \/ generator synchronized<\/li>\n<li>hard to prevent overfitting in the generator<\/li>\n<li>hard to ensure good convergence of the network<\/li>\n<li>outputs from the generator are noisy<\/li>\n<\/ul>\n<p>So, he suggested going convolutional with deep convolutional GANs, motivating it with the following reasons:<\/p>\n<ul>\n<li>better results on images (spatial dependence, upsample \/ downsample)<\/li>\n<li>fewer parameters (usage of strides, shared parameters)<\/li>\n<li>closer to human brain<\/li>\n<\/ul>\n<p>Julien also demonstrated how to tweak a deep convolutional GAN, visualize and manipulate convolutional filters, and optimize mutual information.<\/p>\n<p><center><iframe loading=\"lazy\" src=\"https:\/\/www.slideshare.net\/slideshow\/embed_code\/key\/2q6IvE0EDGGjiR\" width=\"427\" height=\"356\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" style=\"border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;\" allowfullscreen><\/iframe><\/center><\/p>\n<p>Join <a href=\"https:\/\/www.meetup.com\/TensorFlow-Paris\/\" target=\"_blank\" rel=\"noopener noreferrer\">our group<\/a> to get informed with upcoming events.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Want_details_Watch_the_video\"><\/span>Want details? Watch the video!<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><center><script src=\"\/\/fast.wistia.com\/embed\/medias\/udbghk781l.jsonp\" async><\/script><script src=\"\/\/fast.wistia.com\/assets\/external\/E-v1.js\" async><\/script><\/p>\n<div class=\"wistia_embed wistia_async_udbghk781l\" style=\"height:360px;width:640px\">&nbsp;<\/div>\n<p><\/center><\/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\/building-a-chatbot-with-tensorflow-and-keras\/\">Building a Chatbot with TensorFlow and Keras<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/building-a-keras-based-image-classifier-using-tensorflow-for-a-back-end\/\">Building a Keras-Based Image Classifier Using TensorFlow for a Back End<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/tensorflow-in-the-cloud-accelerating-resources-with-elastic-gpus\/\">TensorFlow in the Cloud: Accelerating Resources with Elastic GPUs<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/research-papers\/performance-of-distributed-tensorflow-a-multi-node-and-multi-gpu-configuration\/\">Performance of Distributed TensorFlow: A Multi-Node and Multi-GPU Configuration<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"About_the_experts\"><\/span>About the experts<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><small><a href=\"https:\/\/www.linkedin.com\/in\/jofaichow\" target=\"_blank\" rel=\"noopener noreferrer\">Jo-fai Chow<\/a> is a data scientist at H2O.ai. Before joining H2O, he was in the business intelligence team at Virgin Media where he developed data products to enable quick and smart business decisions. Jo-fai has a background in water engineering. Before his data science journey, he was an EngD researcher at STREAM Industrial Doctorate Centre working on machine learning techniques for drainage design optimization. Prior to that, Jo-fai was an asset management consultant specialized in data mining and constrained optimization for the utilities sector in UK and abroad.<\/small><\/p>\n<p><small><a href=\"https:\/\/www.linkedin.com\/in\/julien-launay-400a7512a\/en\" target=\"_blank\" rel=\"noopener noreferrer\">Julien Launay<\/a> is a civil servant student at Cachan\u2019s \u00c9cole Normale Sup\u00e9rieure. He is pursuing a MS in Civil Engineering, with a personal focus on machine learning. His research project aims at building TensorFlow-based tools to study cracking patterns in concrete.<\/small><\/p>\n","protected":false},"excerpt":{"rendered":"<p>At the recent meetup in Paris, attendees learnt a number of TensorFlow use cases and related deep learning tools, as well as got familiar with generative adversarial networks.<\/p>\n<p>&nbsp;<\/p>\n<p>Styling images and sorting cucumbers with TensorFlow<\/p>\n<p>Starting his session with an overview of TensorFlow\u2019s guts, Jo-fai Chow of H2O.ai enumerated a bunch of [&#8230;]<\/p>\n","protected":false},"author":3,"featured_media":28672,"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-28375","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 v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>The Diversity of TensorFlow: Wrappers, GPUs, Generative Adversarial Networks, etc. | Altoros<\/title>\n<meta name=\"description\" content=\"Enjoying its popularity, TensorFlow is now used in a variety of areas (e.g., to style images or automate cucumber sorting).\" \/>\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\/the-diversity-of-tensorflow-wrappers-gpus-generative-adversarial-networks-etc\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"The Diversity of TensorFlow: Wrappers, GPUs, Generative Adversarial Networks, etc. | Altoros\" \/>\n<meta property=\"og:description\" content=\"At the recent meetup in Paris, attendees learnt a number of TensorFlow use cases and related deep learning tools, as well as got familiar with generative adversarial networks. &nbsp; Styling images and sorting cucumbers with TensorFlow Starting his session with an overview of TensorFlow\u2019s guts, Jo-fai Chow of H2O.ai enumerated a bunch of [...]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.altoros.com\/blog\/the-diversity-of-tensorflow-wrappers-gpus-generative-adversarial-networks-etc\/\" \/>\n<meta property=\"og:site_name\" content=\"Altoros\" \/>\n<meta property=\"article:published_time\" content=\"2016-12-14T18:48:46+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-05-07T15:24:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/12\/deep-convolutional-generative-adversarial-networks-v3.png\" \/>\n\t<meta property=\"og:image:width\" content=\"892\" \/>\n\t<meta property=\"og:image:height\" content=\"499\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Sophia Turol\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sophia Turol\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/the-diversity-of-tensorflow-wrappers-gpus-generative-adversarial-networks-etc\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/the-diversity-of-tensorflow-wrappers-gpus-generative-adversarial-networks-etc\\\/\"},\"author\":{\"name\":\"Sophia Turol\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/#\\\/schema\\\/person\\\/58194952af19fe7b2b830846e077a58e\"},\"headline\":\"The Diversity of TensorFlow: Wrappers, GPUs, Generative Adversarial Networks, etc.\",\"datePublished\":\"2016-12-14T18:48:46+00:00\",\"dateModified\":\"2019-05-07T15:24:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/the-diversity-of-tensorflow-wrappers-gpus-generative-adversarial-networks-etc\\\/\"},\"wordCount\":683,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/the-diversity-of-tensorflow-wrappers-gpus-generative-adversarial-networks-etc\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/12\\\/deep-convolutional-generative-adversarial-networks-v3.png\",\"keywords\":[\"Machine Learning\",\"TensorFlow\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.altoros.com\\\/blog\\\/the-diversity-of-tensorflow-wrappers-gpus-generative-adversarial-networks-etc\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/the-diversity-of-tensorflow-wrappers-gpus-generative-adversarial-networks-etc\\\/\",\"url\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/the-diversity-of-tensorflow-wrappers-gpus-generative-adversarial-networks-etc\\\/\",\"name\":\"The Diversity of TensorFlow: Wrappers, GPUs, Generative Adversarial Networks, etc. | Altoros\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/the-diversity-of-tensorflow-wrappers-gpus-generative-adversarial-networks-etc\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/the-diversity-of-tensorflow-wrappers-gpus-generative-adversarial-networks-etc\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/12\\\/deep-convolutional-generative-adversarial-networks-v3.png\",\"datePublished\":\"2016-12-14T18:48:46+00:00\",\"dateModified\":\"2019-05-07T15:24:44+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/#\\\/schema\\\/person\\\/58194952af19fe7b2b830846e077a58e\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/the-diversity-of-tensorflow-wrappers-gpus-generative-adversarial-networks-etc\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.altoros.com\\\/blog\\\/the-diversity-of-tensorflow-wrappers-gpus-generative-adversarial-networks-etc\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/the-diversity-of-tensorflow-wrappers-gpus-generative-adversarial-networks-etc\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/12\\\/deep-convolutional-generative-adversarial-networks-v3.png\",\"contentUrl\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/12\\\/deep-convolutional-generative-adversarial-networks-v3.png\",\"width\":892,\"height\":499},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/the-diversity-of-tensorflow-wrappers-gpus-generative-adversarial-networks-etc\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"The Diversity of TensorFlow: Wrappers, GPUs, Generative Adversarial Networks, etc.\"}]},{\"@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\\\/58194952af19fe7b2b830846e077a58e\",\"name\":\"Sophia Turol\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/05\\\/trello_card-96x96.jpg\",\"url\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/05\\\/trello_card-96x96.jpg\",\"contentUrl\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/05\\\/trello_card-96x96.jpg\",\"caption\":\"Sophia Turol\"},\"description\":\"Sophia Turol is passionate about delivering well-structured articles that cater for picky technical audience. With 3+ years in technical writing and 5+ years in editorship, she enjoys collaboration with developers to create insightful, yet intelligible technical tutorials, overviews, and case studies. Sophie is enthusiastic about deep learning solutions\u2014TensorFlow in particular\u2014and PaaS systems, such as Cloud Foundry.\",\"url\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/author\\\/sophie-turol\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"The Diversity of TensorFlow: Wrappers, GPUs, Generative Adversarial Networks, etc. | Altoros","description":"Enjoying its popularity, TensorFlow is now used in a variety of areas (e.g., to style images or automate cucumber sorting).","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\/the-diversity-of-tensorflow-wrappers-gpus-generative-adversarial-networks-etc\/","og_locale":"en_US","og_type":"article","og_title":"The Diversity of TensorFlow: Wrappers, GPUs, Generative Adversarial Networks, etc. | Altoros","og_description":"At the recent meetup in Paris, attendees learnt a number of TensorFlow use cases and related deep learning tools, as well as got familiar with generative adversarial networks. &nbsp; Styling images and sorting cucumbers with TensorFlow Starting his session with an overview of TensorFlow\u2019s guts, Jo-fai Chow of H2O.ai enumerated a bunch of [...]","og_url":"https:\/\/www.altoros.com\/blog\/the-diversity-of-tensorflow-wrappers-gpus-generative-adversarial-networks-etc\/","og_site_name":"Altoros","article_published_time":"2016-12-14T18:48:46+00:00","article_modified_time":"2019-05-07T15:24:44+00:00","og_image":[{"width":892,"height":499,"url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/12\/deep-convolutional-generative-adversarial-networks-v3.png","type":"image\/png"}],"author":"Sophia Turol","twitter_misc":{"Written by":"Sophia Turol","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.altoros.com\/blog\/the-diversity-of-tensorflow-wrappers-gpus-generative-adversarial-networks-etc\/#article","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/the-diversity-of-tensorflow-wrappers-gpus-generative-adversarial-networks-etc\/"},"author":{"name":"Sophia Turol","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/58194952af19fe7b2b830846e077a58e"},"headline":"The Diversity of TensorFlow: Wrappers, GPUs, Generative Adversarial Networks, etc.","datePublished":"2016-12-14T18:48:46+00:00","dateModified":"2019-05-07T15:24:44+00:00","mainEntityOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/the-diversity-of-tensorflow-wrappers-gpus-generative-adversarial-networks-etc\/"},"wordCount":683,"commentCount":0,"image":{"@id":"https:\/\/www.altoros.com\/blog\/the-diversity-of-tensorflow-wrappers-gpus-generative-adversarial-networks-etc\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/12\/deep-convolutional-generative-adversarial-networks-v3.png","keywords":["Machine Learning","TensorFlow"],"articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.altoros.com\/blog\/the-diversity-of-tensorflow-wrappers-gpus-generative-adversarial-networks-etc\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.altoros.com\/blog\/the-diversity-of-tensorflow-wrappers-gpus-generative-adversarial-networks-etc\/","url":"https:\/\/www.altoros.com\/blog\/the-diversity-of-tensorflow-wrappers-gpus-generative-adversarial-networks-etc\/","name":"The Diversity of TensorFlow: Wrappers, GPUs, Generative Adversarial Networks, etc. | Altoros","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/the-diversity-of-tensorflow-wrappers-gpus-generative-adversarial-networks-etc\/#primaryimage"},"image":{"@id":"https:\/\/www.altoros.com\/blog\/the-diversity-of-tensorflow-wrappers-gpus-generative-adversarial-networks-etc\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/12\/deep-convolutional-generative-adversarial-networks-v3.png","datePublished":"2016-12-14T18:48:46+00:00","dateModified":"2019-05-07T15:24:44+00:00","author":{"@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/58194952af19fe7b2b830846e077a58e"},"breadcrumb":{"@id":"https:\/\/www.altoros.com\/blog\/the-diversity-of-tensorflow-wrappers-gpus-generative-adversarial-networks-etc\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.altoros.com\/blog\/the-diversity-of-tensorflow-wrappers-gpus-generative-adversarial-networks-etc\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/the-diversity-of-tensorflow-wrappers-gpus-generative-adversarial-networks-etc\/#primaryimage","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/12\/deep-convolutional-generative-adversarial-networks-v3.png","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/12\/deep-convolutional-generative-adversarial-networks-v3.png","width":892,"height":499},{"@type":"BreadcrumbList","@id":"https:\/\/www.altoros.com\/blog\/the-diversity-of-tensorflow-wrappers-gpus-generative-adversarial-networks-etc\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.altoros.com\/blog\/"},{"@type":"ListItem","position":2,"name":"The Diversity of TensorFlow: Wrappers, GPUs, Generative Adversarial Networks, etc."}]},{"@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\/58194952af19fe7b2b830846e077a58e","name":"Sophia Turol","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/05\/trello_card-96x96.jpg","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/05\/trello_card-96x96.jpg","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/05\/trello_card-96x96.jpg","caption":"Sophia Turol"},"description":"Sophia Turol is passionate about delivering well-structured articles that cater for picky technical audience. With 3+ years in technical writing and 5+ years in editorship, she enjoys collaboration with developers to create insightful, yet intelligible technical tutorials, overviews, and case studies. Sophie is enthusiastic about deep learning solutions\u2014TensorFlow in particular\u2014and PaaS systems, such as Cloud Foundry.","url":"https:\/\/www.altoros.com\/blog\/author\/sophie-turol\/"}]}},"_links":{"self":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/28375","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\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/comments?post=28375"}],"version-history":[{"count":9,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/28375\/revisions"}],"predecessor-version":[{"id":42892,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/28375\/revisions\/42892"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media\/28672"}],"wp:attachment":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media?parent=28375"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/categories?post=28375"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/tags?post=28375"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}