{"id":39345,"date":"2017-03-31T20:12:29","date_gmt":"2017-03-31T17:12:29","guid":{"rendered":"https:\/\/www.altoros.com\/blog\/?p=39345"},"modified":"2018-11-22T18:23:06","modified_gmt":"2018-11-22T15:23:06","slug":"ml-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training-data-by-50x","status":"publish","type":"post","link":"https:\/\/www.altoros.com\/blog\/ml-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training-data-by-50x\/","title":{"rendered":"ML Toolkit for TensorFlow: Out-of-the-Box Algorithms to Boost Training Data by 50x"},"content":{"rendered":"<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\/ml-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training-data-by-50x\/#A_variety_of_algorithms\" >A variety of algorithms<\/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\/ml-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training-data-by-50x\/#Clustering_k-means_and_GMM\" >Clustering: k-means and GMM<\/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\/ml-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training-data-by-50x\/#WALS\" >WALS<\/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\/ml-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training-data-by-50x\/#Support_vector_machine\" >Support vector machine<\/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\/ml-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training-data-by-50x\/#Stochastic_dual_coordinate_ascent\" >Stochastic dual coordinate ascent<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.altoros.com\/blog\/ml-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training-data-by-50x\/#Random_forests\" >Random forests<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.altoros.com\/blog\/ml-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training-data-by-50x\/#Estimator_API\" >Estimator API<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.altoros.com\/blog\/ml-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training-data-by-50x\/#Distributed_implementation\" >Distributed implementation<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.altoros.com\/blog\/ml-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training-data-by-50x\/#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-10\" href=\"https:\/\/www.altoros.com\/blog\/ml-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training-data-by-50x\/#More_from_TensorFlow_Dev_Summit\" >More from TensorFlow Dev Summit:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/www.altoros.com\/blog\/ml-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training-data-by-50x\/#About_the_expert\" >About the expert<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"A_variety_of_algorithms\"><\/span>A variety of algorithms<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>At TensorFlow Dev Summit 2017, <a href=\"https:\/\/www.linkedin.com\/in\/ashish-agarwal-3932b764\/\" target=\"_blank\">Ashish Agarwal<\/a> of Google introduced a TensorFlow-based toolkit of machine learning algorithms. The toolkit provides out-of-the-box packed solutions to enable researchers and developers to create high-level custom model architectures.<\/p>\n<p>According to  him, <a href=\"https:\/\/github.com\/tensorflow\/tensorflow\/blob\/master\/tensorflow\/contrib\/learn\/README.md\" target=\"_blank\">ML Toolkit<\/a> is open-sourced to be actively developed and now offers the following set of algorithms:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/using-linear-regression-in-tensorflow\/\">Linear<\/a> \/ <a href=\"https:\/\/www.altoros.com\/blog\/using-logistic-and-softmax-regression-with-tensorflow\/\">logistic<\/a> regression<\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/using-k-means-clustering-in-tensorflow\/\">K-means clustering<\/a> and <a href=\"https:\/\/en.wikipedia.org\/wiki\/Mixture_model#Gaussian_mixture_model\" target=\"_blank\">Gaussian mixture model<\/a> for unsupervised clustering of data<\/li>\n<li>WALS matrix factorization, a popular collaborative algorithm for the computer systems <\/li>\n<li>Support vector machine<\/li>\n<li>Stochastic dual coordinate ascent for context optimization<\/li>\n<li>Random forest and decision trees<\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/what-it-takes-to-build-and-train-neural-networks-for-autonomous-vehicles\/\">Neural networks<\/a> (DNN, RNN, LSTM, etc.)<\/li>\n<\/ul>\n<p>Ashish highlighted some details on a few algorithms, so the attendees could better understand the existing and upcoming features for them.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/11\/tensorflow-dev-summit-2017-ashish-agarwal-keynote-ml-toolkit-v11.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/11\/tensorflow-dev-summit-2017-ashish-agarwal-keynote-ml-toolkit-v11.jpg\" alt=\"tensorflow-dev-summit-2017-ashish-agarwal-keynote-ml-toolkit-v11\" width=\"640\" class=\"aligncenter size-full wp-image-39347\" \/><\/a><\/center><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Clustering_k-means_and_GMM\"><\/span>Clustering: k-means and GMM<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Working with <a href=\"https:\/\/github.com\/tensorflow\/tensorflow\/blob\/master\/tensorflow\/contrib\/learn\/python\/learn\/estimators\/kmeans.py\" target=\"_blank\">k-means<\/a>, the team has implemented a standard layouts iterative algorithm along with random and k-means++ initializations. A support for full- and mini-batch training modes is enabled, and a user can specify such distance functions as cosine or Eucledian square distances.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/11\/tensorflow-dev-summit-ashish-agarwal-v11.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/11\/tensorflow-dev-summit-ashish-agarwal-v11.jpg\" alt=\"tensorflow-dev-summit-ashish-agarwal-v11\" width=\"640\" class=\"aligncenter size-full wp-image-39348\" \/><\/a><\/center><\/p>\n<p><a href=\"https:\/\/github.com\/tensorflow\/tensorflow\/blob\/master\/tensorflow\/contrib\/factorization\/python\/ops\/gmm.py\" target=\"_blank\">Gaussian mixture models<\/a> (GMM) represent more powerful model, yet harder to train. To facilitate the process, an iterative expectation-maximization algorithm was utilized. Furthermore, one can choose from a combination of means, covariances, and mixture weights to train on.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"WALS\"><\/span>WALS<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><a href=\"https:\/\/www.tensorflow.org\/versions\/r1.15\/api_docs\/python\/tf\/contrib\" target=\"_blank\">WALS<\/a> is a matrix factorization using weighted alternating least squares. Let say, you have a sparse matrix comprising ratings that users have given some videos. As the matrix is sparse, it means that not all videos have been rated by all users. So, you want to build recommendations which video to watch next or find user-user \/ video-video similarities. For that purpose, one has to factorize the matrix into two dense factors.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/11\/tensorflow-dev-summit-2017-ashish-agarwal-v11.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/11\/tensorflow-dev-summit-2017-ashish-agarwal-v11.jpg\" alt=\"tensorflow-dev-summit-2017-ashish-agarwal-v11\" width=\"640\" class=\"aligncenter size-full wp-image-39349\" \/><\/a><\/center><\/p>\n<p>As the algorithm indicates, the loss is weighted, allowing for downgrading unrated videos in the original input, avoiding spam, or popular entries from drowning out the total loss.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Support_vector_machine\"><\/span>Support vector machine<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><a href=\"https:\/\/github.com\/tensorflow\/tensorflow\/blob\/master\/tensorflow\/contrib\/learn\/python\/learn\/estimators\/svm.py\" target=\"_blank\">Support vector machines<\/a> (SVMs) operate by finding a decision boundary that maximizes a margin. The Google team employs soft margin methods using a hinge loss with current implementation of linear SVMs with L1 and L2 regularizations.<\/p>\n<p>With a nonlinear kernel, SVMs get more powerful as it allows for finding a complicated decision boundary. So, now Google is working on providing nonlinear kernels using the kernel approximation trick.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Stochastic_dual_coordinate_ascent\"><\/span>Stochastic dual coordinate ascent<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Using a neat trick, <a href=\"https:\/\/en.wikipedia.org\/wiki\/Stochastic_gradient_descent\" target=\"_blank\">stochastic dual coordinate ascent<\/a> (SDCA) transforms, let\u2019s say, a convex loss function with L1 and L2 regularization into a dual form, which proves efficient in most cases. This algorithm is capable of delivering models from linear and logistic regressions to SVMs.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/11\/tensorflow-dev-summit-2017-ashish-agarwal-keynote-v11.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/11\/tensorflow-dev-summit-2017-ashish-agarwal-keynote-v11.jpg\" alt=\"tensorflow-dev-summit-2017-ashish-agarwal-keynote-v11\" width=\"640\" class=\"aligncenter size-full wp-image-39350\" \/><\/a><\/center><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Random_forests\"><\/span>Random forests<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Random_forest\" target=\"_blank\">Random forests<\/a> are basically decision trees that create a hierarchical partitioning of the feature space. Currently, the method behind is \u201cextremely random forest training,\u201d which enables better parallelization and scaling. Google Brain is also working on delivering gradient-boosted decision trees.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Estimator_API\"><\/span>Estimator API<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>To make those algorithms easy to implement, the team employs <a href=\"https:\/\/www.tensorflow.org\/extend\/estimators\" target=\"_blank\">Estimator APIs<\/a>. Ashish demonstrated how it works when applied to <a href=\"https:\/\/www.altoros.com\/blog\/evaluating-the-apriori-algorithm-vs-k-means-clustering-for-a-recommendation-engine\/\">k-means clustering<\/a>. The reason for using an estimator API is that it significantly boosts the process with just a few lines of code.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/11\/tensorflow-dev-summit-2017-estimator-api-v11.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/11\/tensorflow-dev-summit-2017-estimator-api-v11.jpg\" alt=\"tensorflow-dev-summit-2017-estimator-api-v11\" width=\"640\" class=\"aligncenter size-full wp-image-39351\" \/><\/a><\/center><\/p>\n<blockquote><p><em> \u201cYou start by creating a k-means clustering object, and you can pass in a bunch of options, like a number of clusters, how you want to train, how you want to initialize, and so on. Next, you call the fit function and pass it into your input, and that\u2019s it. No tons of logs behind the scenes.\u201d \u2014Ashish Agarwal, Google Brain<\/em><\/p><\/blockquote>\n<p>On creating a graph, the estimator will run training iterations and configure the runtime until the training is done. Then, a user can proceed with inspecting the model parameters, start running inference, find assignment to clusters, etc.<\/p>\n<p>Furthermore, a user can do more than just inspect the graphs, but embed them into larger training models. Ashish exemplified embedding the k-means algorithm as a layer into a bigger deep learning network.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/11\/tensorflow-dev-summit-2017-flexibility-k-means-v11.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/11\/tensorflow-dev-summit-2017-flexibility-k-means-v11.jpg\" alt=\"tensorflow-dev-summit-2017-flexibility-k-means-v11\" width=\"640\" class=\"aligncenter size-full wp-image-39352\" \/><\/a><\/center><\/p>\n<p>He also provided sample code for implementing this.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/11\/tensorflow-dev-summit-2017-training-k-means-with-deep-neural-networks-v11.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/11\/tensorflow-dev-summit-2017-training-k-means-with-deep-neural-networks-v11.jpg\" alt=\"tensorflow-dev-summit-2017-training-k-means-with-deep-neural-networks-v11\" width=\"640\" class=\"aligncenter size-full wp-image-39353\" \/><\/a><\/center><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Distributed_implementation\"><\/span>Distributed implementation<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Breaking it down to just a few lines of code, those algorithms are backed up by distributed implementations.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/11\/tensorflow-dev-summit-2017-distributed-implementations-v11.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/11\/tensorflow-dev-summit-2017-distributed-implementations-v11.jpg\" alt=\"tensorflow-dev-summit-2017-distributed-implementations-v11\" width=\"640\" class=\"aligncenter size-full wp-image-39354\" \/><\/a><\/center><\/p>\n<p>So, Ashish also showed how it works behind the WALS algorithm.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/11\/tensorflow-dev-summit-2017-distributed-wals-v11-1.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/11\/tensorflow-dev-summit-2017-distributed-wals-v11-1.jpg\" alt=\"tensorflow-dev-summit-2017-distributed-wals-v11\" width=\"640\" class=\"aligncenter size-full wp-image-39355\" \/><\/a><\/center><\/p>\n<p>In practice, it delivers unsurpassed performance, so you can seamlessly run training across hundreds of thousands of machines.<\/p>\n<blockquote><p><em>\u201cFor example, with random forests we were able to train thousands of trees with billions of nodes. With SDCA, we saw 10x\u201350x faster convergence compared to Google\u2019s internal SDC implementation of logistic regression with billions of examples.  \u201d  \u2014Ashish Agarwal<\/em><\/p><\/blockquote>\n<p>According to Ashish, the distributed WALS algorithm allowed for factorizing the 400M*600M sparse matrix into 500 dimensional factors in just 12 hours. It is 50x better scaling than the earlier MapReduce-based implementation offered.<\/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><iframe loading=\"lazy\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/Tuv5QYKU-MM\" frameborder=\"0\" allowfullscreen><\/iframe><\/center><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"More_from_TensorFlow_Dev_Summit\"><\/span>More from TensorFlow Dev Summit:<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/using-tensorflow-to-compose-music-like-the-one-of-bach-or-the-beatles\/\">Using TensorFlow to Compose Music Like the One of Bach or The Beatles<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/ins-and-outs-of-integrating-tensorflow-with-existing-infrastructure\/\">Ins and Outs of Integrating TensorFlow with Existing Infrastructure<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"About_the_expert\"><\/span>About the expert<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><small><a href=\"https:\/\/www.linkedin.com\/in\/ashish-agarwal-3932b764\/\" target=\"_blank\">Ashish Agarwal<\/a> is actively involved in extending and applying TensorFlow to improve such core Google products as Search Ads. Before this, he spent many years building Search Ads foundations, from machine learning signals to the ads auction, and also created a Google-wide live traffic experimentation framework.<\/small><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A variety of algorithms<\/p>\n<p>At TensorFlow Dev Summit 2017, Ashish Agarwal of Google introduced a TensorFlow-based toolkit of machine learning algorithms. The toolkit provides out-of-the-box packed solutions to enable researchers and developers to create high-level custom model architectures.<\/p>\n<p>According to  him, ML Toolkit is open-sourced to be actively developed and now [&#8230;]<\/p>\n","protected":false},"author":3,"featured_media":39369,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":"","_links_to":"","_links_to_target":""},"categories":[7],"tags":[748,749],"class_list":["post-39345","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news-and-opinion","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>ML Toolkit for TensorFlow: Out-of-the-Box Algorithms to Boost Training Data by 50x | Altoros<\/title>\n<meta name=\"description\" content=\"Learn how Google uses k-means for unsupervised clustering of data, stochastic dual coordinate ascent for context optimization, WALS for recommendations, etc.\" \/>\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\/ml-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training-data-by-50x\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ML Toolkit for TensorFlow: Out-of-the-Box Algorithms to Boost Training Data by 50x | Altoros\" \/>\n<meta property=\"og:description\" content=\"A variety of algorithms At TensorFlow Dev Summit 2017, Ashish Agarwal of Google introduced a TensorFlow-based toolkit of machine learning algorithms. The toolkit provides out-of-the-box packed solutions to enable researchers and developers to create high-level custom model architectures. According to him, ML Toolkit is open-sourced to be actively developed and now [...]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.altoros.com\/blog\/ml-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training-data-by-50x\/\" \/>\n<meta property=\"og:site_name\" content=\"Altoros\" \/>\n<meta property=\"article:published_time\" content=\"2017-03-31T17:12:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-11-22T15:23:06+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/03\/machine-learning-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training.gif\" \/>\n\t<meta property=\"og:image:width\" content=\"640\" \/>\n\t<meta property=\"og:image:height\" content=\"424\" \/>\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\/ml-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training-data-by-50x\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/ml-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training-data-by-50x\/\",\"name\":\"ML Toolkit for TensorFlow: Out-of-the-Box Algorithms to Boost Training Data by 50x | Altoros\",\"isPartOf\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/ml-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training-data-by-50x\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/ml-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training-data-by-50x\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/03\/machine-learning-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training.gif\",\"datePublished\":\"2017-03-31T17:12:29+00:00\",\"dateModified\":\"2018-11-22T15:23:06+00:00\",\"author\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/58194952af19fe7b2b830846e077a58e\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/ml-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training-data-by-50x\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.altoros.com\/blog\/ml-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training-data-by-50x\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/ml-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training-data-by-50x\/#primaryimage\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/03\/machine-learning-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training.gif\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/03\/machine-learning-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training.gif\",\"width\":640,\"height\":424},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.altoros.com\/blog\/ml-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training-data-by-50x\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.altoros.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ML Toolkit for TensorFlow: Out-of-the-Box Algorithms to Boost Training Data by 50x\"}]},{\"@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":"ML Toolkit for TensorFlow: Out-of-the-Box Algorithms to Boost Training Data by 50x | Altoros","description":"Learn how Google uses k-means for unsupervised clustering of data, stochastic dual coordinate ascent for context optimization, WALS for recommendations, etc.","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\/ml-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training-data-by-50x\/","og_locale":"en_US","og_type":"article","og_title":"ML Toolkit for TensorFlow: Out-of-the-Box Algorithms to Boost Training Data by 50x | Altoros","og_description":"A variety of algorithms At TensorFlow Dev Summit 2017, Ashish Agarwal of Google introduced a TensorFlow-based toolkit of machine learning algorithms. The toolkit provides out-of-the-box packed solutions to enable researchers and developers to create high-level custom model architectures. According to him, ML Toolkit is open-sourced to be actively developed and now [...]","og_url":"https:\/\/www.altoros.com\/blog\/ml-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training-data-by-50x\/","og_site_name":"Altoros","article_published_time":"2017-03-31T17:12:29+00:00","article_modified_time":"2018-11-22T15:23:06+00:00","og_image":[{"width":640,"height":424,"url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/03\/machine-learning-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training.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\/ml-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training-data-by-50x\/","url":"https:\/\/www.altoros.com\/blog\/ml-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training-data-by-50x\/","name":"ML Toolkit for TensorFlow: Out-of-the-Box Algorithms to Boost Training Data by 50x | Altoros","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/ml-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training-data-by-50x\/#primaryimage"},"image":{"@id":"https:\/\/www.altoros.com\/blog\/ml-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training-data-by-50x\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/03\/machine-learning-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training.gif","datePublished":"2017-03-31T17:12:29+00:00","dateModified":"2018-11-22T15:23:06+00:00","author":{"@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/58194952af19fe7b2b830846e077a58e"},"breadcrumb":{"@id":"https:\/\/www.altoros.com\/blog\/ml-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training-data-by-50x\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.altoros.com\/blog\/ml-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training-data-by-50x\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/ml-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training-data-by-50x\/#primaryimage","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/03\/machine-learning-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training.gif","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/03\/machine-learning-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training.gif","width":640,"height":424},{"@type":"BreadcrumbList","@id":"https:\/\/www.altoros.com\/blog\/ml-toolkit-for-tensorflow-out-of-the-box-algorithms-to-boost-training-data-by-50x\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.altoros.com\/blog\/"},{"@type":"ListItem","position":2,"name":"ML Toolkit for TensorFlow: Out-of-the-Box Algorithms to Boost Training Data by 50x"}]},{"@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\/39345","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=39345"}],"version-history":[{"count":10,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/39345\/revisions"}],"predecessor-version":[{"id":39413,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/39345\/revisions\/39413"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media\/39369"}],"wp:attachment":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media?parent=39345"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/categories?post=39345"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/tags?post=39345"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}