{"id":32191,"date":"2017-03-02T18:45:55","date_gmt":"2017-03-02T15:45:55","guid":{"rendered":"https:\/\/www.altoros.com\/blog\/?p=32191"},"modified":"2018-08-01T17:09:04","modified_gmt":"2018-08-01T14:09:04","slug":"enabling-multilingual-neural-machine-translation-with-tensorflow","status":"publish","type":"post","link":"https:\/\/www.altoros.com\/blog\/enabling-multilingual-neural-machine-translation-with-tensorflow\/","title":{"rendered":"Enabling Multilingual Neural Machine Translation with TensorFlow"},"content":{"rendered":"<p>At the recent <a href=\"https:\/\/www.meetup.com\/TensorFlow\/events\/237239057\/\" target=\"_blank\">TensorFlow meetup<\/a>, attendees learnt about some distinct patterns to use, as well as found out how to contribute one of their own. Furthermore, an engineer of the Google Brain team explored how to improve conventional machine translation with TensorFlow.<\/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\/enabling-multilingual-neural-machine-translation-with-tensorflow\/#Software_patterns_in_TensorFlow\" >Software patterns in 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\/enabling-multilingual-neural-machine-translation-with-tensorflow\/#Automating_phrase-based_machine_translation\" >Automating phrase-based machine translation<\/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\/enabling-multilingual-neural-machine-translation-with-tensorflow\/#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\/enabling-multilingual-neural-machine-translation-with-tensorflow\/#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\/enabling-multilingual-neural-machine-translation-with-tensorflow\/#About_the_speakers\" >About the speakers<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"Software_patterns_in_TensorFlow\"><\/span>Software patterns in TensorFlow<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>In his session,  <a href=\"https:\/\/www.linkedin.com\/in\/gar1t\/\" target=\"_blank\">Garrett Smith<\/a> of Guild AI explored the challenge imposed by TensorFlow\u2019s flexibility to discover and apply effective software patterns from the <a href=\"http:\/\/www.tensorflowpatterns.org\/patterns\/\" target=\"_blank\">variety<\/a> offered by the library. Having worked with dozens of TensorFlow projects, he  discussed what patterns do work and what don\u2019t.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/03\/garrett-smith-tensorflow-meetup-software-patterns-v12.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/03\/garrett-smith-tensorflow-meetup-software-patterns-v12.png\" alt=\"\" width=\"600\" class=\"aligncenter size-full wp-image-32196\" \/><\/a><\/center><\/p>\n<p>Thus, Garrett exemplified <a href=\"http:\/\/www.tensorflowpatterns.org\/patterns\/function-defined-globals.html\" target=\"_blank\">function-defined globals<\/a>\u2014a pattern, which is supposed to improve the readability and maintainability of a script in two ways:<\/p>\n<ul>\n<li>Concede that TensorFlow scripts a program by side-effects<\/li>\n<li>Formalize the definition of a global state using functions and Python\u2019s <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">global<\/code> statement<\/li>\n<\/ul>\n<p>This pattern provides support for those smaller functions that are easier to modify, enables efficient code reuse, and eliminates the need to use sophisticated state definitions when documenting shared state.<\/p>\n<p>Garrett demonstrated how to apply the <em>function-defined globals<\/em> pattern to a MNIST data set. You can check out the <a href=\"https:\/\/github.com\/guildai\/_examples\/blob\/master\/mnist-2\/intro.py\" target=\"_blank\">source code<\/a> of his example.<\/p>\n<p>Finally, he outlined some guidelines and acceptance criteria for those eager to submit a TensorFlow pattern of their own.<\/p>\n<p>You may browse through the <a href=\"https:\/\/gar1t.github.io\/2017-02-23-tensorflow-chicago\/#\/\" target=\"_blank\">Garret\u2019s slides<\/a> from the meetup.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Automating_phrase-based_machine_translation\"><\/span>Automating phrase-based machine translation<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><a href=\"https:\/\/www.linkedin.com\/in\/xiaobing-liu-27990a49\/\" target=\"_blank\">Xiaobing Liu<\/a> from the Google Brain team gave insights into applying machine learning techniques to automate translation systems and enhance conventional <a href=\"https:\/\/en.wikipedia.org\/wiki\/Statistical_machine_translation#Phrase-based_translation\" target=\"_blank\">phrase-based machine translation<\/a> (PBMT).<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/03\/xiaobing-liu-tensorflow-meetup-machine-translation-v12.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/03\/xiaobing-liu-tensorflow-meetup-machine-translation-v12.png\" alt=\"\" width=\"600\" class=\"aligncenter size-full wp-image-32200\" \/><\/a><\/center><\/p>\n<p>Using <a href=\"https:\/\/www.altoros.com\/blog\/the-magic-behind-google-translate-sequence-to-sequence-models-and-tensorflow\/\">sequence-to-sequence models<\/a> brings along the need to carry all data in an internal state, and it takes time. <em>Attention models<\/em>\u2014underlying the brain neural machine translation (BNMT)\u2014address this issue by providing access to all encoder states, enabling translation independent of a sentence\u2019s length.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/03\/brain-neural-machine-translation-model-architecture-v11.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/03\/brain-neural-machine-translation-model-architecture-v11-1024x530.png\" alt=\"\" width=\"640\" class=\"aligncenter size-large wp-image-32195\" \/><\/a><small>BNMT model architecture (<a href=\"https:\/\/github.com\/shawnxu1318\/Google-Neural-Machine-Translation-GNMT-\" target=\"_blank\">Image credit<\/a>)<\/small><\/center><\/p>\n<p>Xiaobing detailed how a sample attention model works:<\/p>\n<ul>\n<li>Runs eight decoder <a href=\"https:\/\/www.altoros.com\/blog\/text-prediction-with-tensorflow-and-long-short-term-memory-in-six-steps\/\">long short-term memory  networks<\/a> (LSTMs) in parallel<\/li>\n<li>Output broadcast to decoder LSTMs <\/li>\n<li>Input: previous step of the first decoder LSTM<\/li>\n<\/ul>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/03\/language-translation-attention-model-sample-v445.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/03\/language-translation-attention-model-sample-v445.png\" alt=\"\" width=\"640\" class=\"aligncenter size-full wp-image-32198\" \/><\/a><\/center><\/p>\n<p>To train such a model, it takes around 100 GPUs (12 replicas, eight GPUs each), and the training time takes approximately a week for 2.5 million steps, which is equal to around 300 million sentence pairs.<\/p>\n<p>The Google Brain team also experimented with translating between a language pair which the system has never seen before (Korean and Japanese), which resulted in the &#8220;<a href=\"https:\/\/ai.googleblog.com\/2016\/11\/zero-shot-translation-with-googles.html\" target=\"_blank\">zero-shot<\/a>&#8221; translation. However, it triggered another question whether &#8220;the system was learning a common representation, in which sentences with the same meaning are represented in similar ways regardless of the language.&#8221; By making a 3-dimensional representation of internal network data, the team was able to see if the system translates a set of sentences between all possible pairs of the Japanese, Korean, and English languages.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/03\/interlingua-model-tensorflow-translation-v11.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/03\/interlingua-model-tensorflow-translation-v11.png\" alt=\"\" width=\"640\" class=\"aligncenter size-full wp-image-32197\" \/><\/a><small>A 3D representation of a multilingual model with TensorFlow<\/a><\/small><\/center><\/p>\n<p>While decoding speed used to be a major blocker, tensor processing units (TPUs) and quantization come to a rescue, also improving quality on the way.<\/p>\n<p>Xiaobing then shared the experience of enabling a multilingual model. The Google team tried training several language pairs in a single model and touched upon the challenges faced:<\/p>\n<ul>\n<li>early cutoff\u2014dropping some words in a source sentence<\/li>\n<li>broken dates\/numbers<\/li>\n<li>short rare queries<\/li>\n<li>transliteration of names<\/li>\n<li>junk<\/li>\n<\/ul>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/03\/tensorflow-meetup-silicon-valley-v2337.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/03\/tensorflow-meetup-silicon-valley-v2337.png\" alt=\"\" width=\"600\" class=\"aligncenter size-full wp-image-32199\" \/><\/a><\/center><\/p>\n<p>To learn more about Google&#8217;s experiments in this field, you can read about their <a href=\"https:\/\/ai.googleblog.com\/2016\/09\/a-neural-network-for-machine.html\" target=\"_blank\">neural machine translation system<\/a> or <a href=\"https:\/\/ai.googleblog.com\/2016\/11\/zero-shot-translation-with-googles.html\" target=\"_blank\">zero-shot translation<\/a>. You may also be interested in a <a href=\"https:\/\/arxiv.org\/abs\/1609.08144\" target=\"_blank\">research<\/a> on bridging the gap between human and machine translation.<\/p>\n<p>Join <a href=\"https:\/\/www.meetup.com\/TensorFlow\/\" target=\"_blank\">our group<\/a> to stay tuned with the 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\/6xihi3grkr.jsonp\" async><\/script><script src=\"\/\/fast.wistia.com\/assets\/external\/E-v1.js\" async><\/script><\/p>\n<div class=\"wistia_embed wistia_async_6xihi3grkr\" 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\/the-magic-behind-google-translate-sequence-to-sequence-models-and-tensorflow\/\">The Magic Behind Google Translate: Sequence-to-Sequence Models and TensorFlow<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/how-tensorflow-can-help-to-perform-natural-language-processing-tasks\/\">How TensorFlow Can Help to Perform Natural Language Processing Tasks<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/using-long-short-term-memory-networks-and-tensorflow-for-image-captioning\/\">Using Long Short-Term Memory Networks and TensorFlow for Image Captioning<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"About_the_speakers\"><\/span>About the speakers<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><small><a href=\"https:\/\/www.linkedin.com\/in\/gar1t\/\" target=\"_blank\">Garrett Smith<\/a> is a founder of Guild AI, an open-source toolkit that helps developers to gain insight into their TensorFlow experiments. He has 20+ years of software development experience and has managed teams across a wide range of product development efforts. Garrett has expertise in operations and building reliable, distributed back-end systems. Prior to founding Guild AI, Garrett led the CloudBees PaaS division, which hosted hundreds of thousands of Java apps at scale. He is a frequent instructor and speaker at software conferences and an active member of the Erlang community, maintaining several prominent open-source projects.<\/small><\/p>\n<p><small><a href=\"https:\/\/www.linkedin.com\/in\/xiaobing-liu-27990a49\/\" target=\"_blank\">Xiaobing Liu<\/a> is a senior software engineer at the Google Brain team. In his work, Xiaobing focuses on TensorFlow and some key applications the library could be applied to improve Google products, such as Google Search, Google Translate, etc.<\/small><\/p>\n","protected":false},"excerpt":{"rendered":"<p>At the recent TensorFlow meetup, attendees learnt about some distinct patterns to use, as well as found out how to contribute one of their own. Furthermore, an engineer of the Google Brain team explored how to improve conventional machine translation with TensorFlow.<\/p>\n<p>&nbsp;<\/p>\n<p>Software patterns in TensorFlow<\/p>\n<p>In his session,  Garrett Smith [&#8230;]<\/p>\n","protected":false},"author":3,"featured_media":32204,"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-32191","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>Enabling Multilingual Neural Machine Translation with TensorFlow | Altoros<\/title>\n<meta name=\"description\" content=\"The TensorFlow ecosystem offers an array of software patterns that can add value to a AI-based project. The question is to identify the one that will work.\" \/>\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\/enabling-multilingual-neural-machine-translation-with-tensorflow\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Enabling Multilingual Neural Machine Translation with TensorFlow | Altoros\" \/>\n<meta property=\"og:description\" content=\"At the recent TensorFlow meetup, attendees learnt about some distinct patterns to use, as well as found out how to contribute one of their own. Furthermore, an engineer of the Google Brain team explored how to improve conventional machine translation with TensorFlow. &nbsp; Software patterns in TensorFlow In his session, Garrett Smith [...]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.altoros.com\/blog\/enabling-multilingual-neural-machine-translation-with-tensorflow\/\" \/>\n<meta property=\"og:site_name\" content=\"Altoros\" \/>\n<meta property=\"article:published_time\" content=\"2017-03-02T15:45:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-08-01T14:09:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/03\/enabling-multilingual-translation-with-tensorflow-v111.gif\" \/>\n\t<meta property=\"og:image:width\" content=\"640\" \/>\n\t<meta property=\"og:image:height\" content=\"411\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/gif\" \/>\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=\"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\/enabling-multilingual-neural-machine-translation-with-tensorflow\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/enabling-multilingual-neural-machine-translation-with-tensorflow\/\",\"name\":\"Enabling Multilingual Neural Machine Translation with TensorFlow | Altoros\",\"isPartOf\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/enabling-multilingual-neural-machine-translation-with-tensorflow\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/enabling-multilingual-neural-machine-translation-with-tensorflow\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/03\/enabling-multilingual-translation-with-tensorflow-v111.gif\",\"datePublished\":\"2017-03-02T15:45:55+00:00\",\"dateModified\":\"2018-08-01T14:09:04+00:00\",\"author\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/58194952af19fe7b2b830846e077a58e\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/enabling-multilingual-neural-machine-translation-with-tensorflow\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.altoros.com\/blog\/enabling-multilingual-neural-machine-translation-with-tensorflow\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/enabling-multilingual-neural-machine-translation-with-tensorflow\/#primaryimage\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/03\/enabling-multilingual-translation-with-tensorflow-v111.gif\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/03\/enabling-multilingual-translation-with-tensorflow-v111.gif\",\"width\":640,\"height\":411},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.altoros.com\/blog\/enabling-multilingual-neural-machine-translation-with-tensorflow\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.altoros.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Enabling Multilingual Neural Machine Translation 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\/58194952af19fe7b2b830846e077a58e\",\"name\":\"Sophia Turol\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/\",\"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":"Enabling Multilingual Neural Machine Translation with TensorFlow | Altoros","description":"The TensorFlow ecosystem offers an array of software patterns that can add value to a AI-based project. The question is to identify the one that will work.","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\/enabling-multilingual-neural-machine-translation-with-tensorflow\/","og_locale":"en_US","og_type":"article","og_title":"Enabling Multilingual Neural Machine Translation with TensorFlow | Altoros","og_description":"At the recent TensorFlow meetup, attendees learnt about some distinct patterns to use, as well as found out how to contribute one of their own. Furthermore, an engineer of the Google Brain team explored how to improve conventional machine translation with TensorFlow. &nbsp; Software patterns in TensorFlow In his session, Garrett Smith [...]","og_url":"https:\/\/www.altoros.com\/blog\/enabling-multilingual-neural-machine-translation-with-tensorflow\/","og_site_name":"Altoros","article_published_time":"2017-03-02T15:45:55+00:00","article_modified_time":"2018-08-01T14:09:04+00:00","og_image":[{"width":640,"height":411,"url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/03\/enabling-multilingual-translation-with-tensorflow-v111.gif","type":"image\/gif"}],"author":"Sophia Turol","twitter_misc":{"Written by":"Sophia Turol","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.altoros.com\/blog\/enabling-multilingual-neural-machine-translation-with-tensorflow\/","url":"https:\/\/www.altoros.com\/blog\/enabling-multilingual-neural-machine-translation-with-tensorflow\/","name":"Enabling Multilingual Neural Machine Translation with TensorFlow | Altoros","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/enabling-multilingual-neural-machine-translation-with-tensorflow\/#primaryimage"},"image":{"@id":"https:\/\/www.altoros.com\/blog\/enabling-multilingual-neural-machine-translation-with-tensorflow\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/03\/enabling-multilingual-translation-with-tensorflow-v111.gif","datePublished":"2017-03-02T15:45:55+00:00","dateModified":"2018-08-01T14:09:04+00:00","author":{"@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/58194952af19fe7b2b830846e077a58e"},"breadcrumb":{"@id":"https:\/\/www.altoros.com\/blog\/enabling-multilingual-neural-machine-translation-with-tensorflow\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.altoros.com\/blog\/enabling-multilingual-neural-machine-translation-with-tensorflow\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/enabling-multilingual-neural-machine-translation-with-tensorflow\/#primaryimage","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/03\/enabling-multilingual-translation-with-tensorflow-v111.gif","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/03\/enabling-multilingual-translation-with-tensorflow-v111.gif","width":640,"height":411},{"@type":"BreadcrumbList","@id":"https:\/\/www.altoros.com\/blog\/enabling-multilingual-neural-machine-translation-with-tensorflow\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.altoros.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Enabling Multilingual Neural Machine Translation 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\/58194952af19fe7b2b830846e077a58e","name":"Sophia Turol","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/","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\/32191","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=32191"}],"version-history":[{"count":5,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/32191\/revisions"}],"predecessor-version":[{"id":32203,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/32191\/revisions\/32203"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media\/32204"}],"wp:attachment":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media?parent=32191"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/categories?post=32191"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/tags?post=32191"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}