{"id":24260,"date":"2019-09-03T11:00:35","date_gmt":"2019-09-03T18:00:35","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/dotnet\/?p=24260"},"modified":"2019-09-03T12:42:29","modified_gmt":"2019-09-03T19:42:29","slug":"announcing-ml-net-1-4-preview-and-model-builder-updates-machine-learning-for-net","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/dotnet\/announcing-ml-net-1-4-preview-and-model-builder-updates-machine-learning-for-net\/","title":{"rendered":"Announcing ML.NET 1.4 Preview and Model Builder updates (Machine Learning for .NET)"},"content":{"rendered":"<h2><img decoding=\"async\" class=\"alignnone wp-image-24299\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2019\/08\/mlnet-icon.png\" alt=\"\" width=\"134\" height=\"127\" \/><\/h2>\n<p>We are excited to announce <a href=\"https:\/\/dot.net\/ml\">ML.NET 1.4 Preview<\/a> and updates to <a href=\"https:\/\/aka.ms\/modelbuilder\">Model Builder<\/a>\u00a0and\u00a0<a href=\"https:\/\/docs.microsoft.com\/en-us\/dotnet\/machine-learning\/how-to-guides\/install-ml-net-cli\">CLI<\/a>.<\/p>\n<p><a href=\"https:\/\/dot.net\/ml\">ML.NET<\/a>\u00a0is an open-source and cross-platform machine learning framework for .NET developers. <a href=\"https:\/\/dot.net\/ml\">ML.NET<\/a>\u00a0also includes <a href=\"https:\/\/aka.ms\/modelbuilder\">Model Builder<\/a>\u00a0(a simple UI tool) and\u00a0<a href=\"https:\/\/docs.microsoft.com\/en-us\/dotnet\/machine-learning\/how-to-guides\/install-ml-net-cli\">CLI<\/a>\u00a0to make it super easy to build custom Machine Learning (ML) models using Automated Machine Learning (AutoML).<\/p>\n<p>Using\u00a0<a href=\"https:\/\/dot.net\/ml\">ML.NET<\/a>, developers can leverage their existing tools and skillsets to develop and infuse custom ML into their applications by creating custom machine learning models for common scenarios like <em>Sentiment Analysis<\/em>, <em>Price Prediction, Sales Forecast prediction<\/em>, <em>Image Classification<\/em> and more!<\/p>\n<p>Following are some of the key highlights in this update:<\/p>\n<h2>ML.NET Updates<\/h2>\n<p>ML.NET 1.4 Preview is a backwards compatible release with no breaking changes so please update to get the latest changes.<\/p>\n<p>In addition to bug fixes described <a href=\"https:\/\/github.com\/dotnet\/machinelearning\/blob\/master\/docs\/release-notes\/1.3.1\/release-1.3.1.md#bug-fixes\">here<\/a>, in ML.NET 1.4 Preview we have released some exciting new features that are described in the following sections.<\/p>\n<h2>Database Loader (Preview)<\/h2>\n<p><img decoding=\"async\" class=\"alignnone wp-image-24268\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2019\/08\/database-loader-illustration-300x181.png\" alt=\"DatabaseLoader in ML.NET\" width=\"348\" height=\"210\" srcset=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2019\/08\/database-loader-illustration-300x181.png 300w, https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2019\/08\/database-loader-illustration-768x464.png 768w, https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2019\/08\/database-loader-illustration.png 818w\" sizes=\"(max-width: 348px) 100vw, 348px\" \/><\/p>\n<p>This feature introduces a native database loader that enables training directly against relational databases. This loader supports any relational database <em>provider<\/em> supported by <code>System.Data<\/code> in .NET Core or .NET Framework, meaning that you can use any RDBMS such as <strong>SQL Server, Azure SQL Database, Oracle, SQLite, PostgreSQL, MySQL, Progress, IBM DB2<\/strong>, etc.<\/p>\n<p>In previous <a href=\"https:\/\/dot.net\/ml\">ML.NET<\/a> releases, since <a href=\"https:\/\/dot.net\/ml\">ML.NET<\/a> 1.0, you could also train against a relational database by providing data through an <code>IEnumerable<\/code> collection by using the <a href=\"https:\/\/docs.microsoft.com\/en-us\/dotnet\/api\/microsoft.ml.dataoperationscatalog.loadfromenumerable?view=ml-dotnet\">LoadFromEnumerable()<\/a> API where the data could be coming from a relational database or any other source. However, when using that approach, you as a developer are responsible for the code reading from the relational database (such as using Entity Framework or any other approach) which needs to be implemented properly so you are streaming data while training the ML model, as in this <a href=\"https:\/\/github.com\/dotnet\/machinelearning-samples\/tree\/master\/samples\/csharp\/getting-started\/DatabaseIntegration\">previous sample using LoadFromEnumerable()<\/a>.<\/p>\n<p>However, this new Database Loader provides a much simpler code implementation for you since the way it reads from the database and makes data available through the IDataView is provided out-of-the-box by the <a href=\"https:\/\/dot.net\/ml\">ML.NET<\/a> framework so you just need to specify your database connection string, what\u2019s the SQL statement for the dataset columns and what\u2019s the data-class to use when loading the data. It is that simple!<\/p>\n<p>Here\u2019s example code on how easily you can now configure your code to load data directly from a relational database into an IDataView which will be used later on when training your model.<\/p>\n<pre class=\"lang:csharp decode:true \">\/\/Lines of code for loading data from a database into an IDataView for a later model training\r\n\r\nstring connectionString = @\"Data Source=YOUR_SERVER;Initial Catalog= YOUR_DATABASE;Integrated Security=True\";\r\nstring commandText = \"SELECT * from SentimentDataset\";\r\nDatabaseLoader loader = mlContext.Data.CreateDatabaseLoader();\r\nDatabaseSource dbSource = new DatabaseSource(SqlClientFactory.Instance, connectionString, commandText);\r\n\r\nIDataView trainingDataView = loader.Load(dbSource);\r\n\r\n\/\/ ML.NET model training code using the training IDataView\r\n\/\/...\r\n\r\npublic class SentimentData\r\n{\r\n    public string FeedbackText;\r\n    public string Label;\r\n}\r\n<\/pre>\n<p>This feature is in preview and can be accessed via the <code>Microsoft.ML.Experimental<\/code> v0.16-Preview nuget package available <a href=\"https:\/\/www.nuget.org\/packages\/Microsoft.ML.Experimental\">here<\/a>.<\/p>\n<p>For further learning see this <a href=\"https:\/\/github.com\/dotnet\/machinelearning-samples\/tree\/master\/samples\/csharp\/getting-started\/DatabaseLoader\">complete <strong>sample app<\/strong> using the new <strong>DatabaseLoader<\/strong><\/a>.<\/p>\n<h2>Image classification with deep neural networks retraining (Preview)<\/h2>\n<p>This new feature enables native DNN transfer learning with <a href=\"https:\/\/dot.net\/ml\">ML.NET<\/a>, targeting image classification as our first high level scenario.<\/p>\n<p>For instance, with this feature you can create your own custom image classifier model by natively training a TensorFlow model from <a href=\"https:\/\/dot.net\/ml\">ML.NET<\/a> API with your own images.<\/p>\n<p><em>Image classifier scenario &#8211; Train your own custom deep learning model with <a href=\"https:\/\/dot.net\/ml\">ML.NET<\/a> <\/em><\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-24273\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2019\/08\/image-classifier-scenario.png\" alt=\"\" width=\"915\" height=\"202\" srcset=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2019\/08\/image-classifier-scenario.png 1876w, https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2019\/08\/image-classifier-scenario-300x66.png 300w, https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2019\/08\/image-classifier-scenario-768x169.png 768w, https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2019\/08\/image-classifier-scenario-1024x226.png 1024w\" sizes=\"(max-width: 915px) 100vw, 915px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>In order to use TensorFlow, <a href=\"https:\/\/dot.net\/ml\">ML.NET<\/a> is internally taking dependency on the <a href=\"https:\/\/github.com\/SciSharp\/TensorFlow.NET\"><strong>Tensorflow.NET library<\/strong><\/a>.<\/p>\n<p>The Tensorflow.NET library is an open source and low level API library that provides the .NET Standard bindings for TensorFlow. That library is part of the <a href=\"https:\/\/github.com\/SciSharp\">SciSharp stack<\/a> libraries.<\/p>\n<p>Microsoft (the <a href=\"https:\/\/dot.net\/ml\">ML.NET<\/a> team) is closely working with the TensorFlow.NET library team not just for providing higher level APIs for the users in <a href=\"https:\/\/dot.net\/ml\">ML.NET<\/a> (such as our new <em>ImageClassification<\/em> API) but also helping to improve and evolve the <a href=\"https:\/\/github.com\/SciSharp\/TensorFlow.NET\">Tensorflow.NET library<\/a> as an open source project.<\/p>\n<p>We would like to acknowledge the effort and say thank you to the <a href=\"https:\/\/github.com\/SciSharp\/TensorFlow.NET\">Tensorflow.NET library<\/a> team for their agility and great collaboration with us.<\/p>\n<p>The stack diagram below shows how <a href=\"https:\/\/dot.net\/ml\">ML.NET<\/a> implements these new DNN training features. Although we currently only support training <a href=\"https:\/\/www.tensorflow.org\/\">TensorFlow<\/a> models, <a href=\"https:\/\/pytorch.org\/\">PyTorch<\/a> support is in the roadmap.<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-24275\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2019\/08\/dnn-features-architecture-diagram.png\" alt=\"\" width=\"501\" height=\"376\" srcset=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2019\/08\/dnn-features-architecture-diagram.png 1082w, https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2019\/08\/dnn-features-architecture-diagram-300x225.png 300w, https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2019\/08\/dnn-features-architecture-diagram-768x576.png 768w, https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2019\/08\/dnn-features-architecture-diagram-1024x768.png 1024w\" sizes=\"(max-width: 501px) 100vw, 501px\" \/><\/p>\n<p>As the first main scenario for high level APIs, we are currently focusing on <strong>image classification<\/strong>. The goal of these new high-level APIs is to provide powerful and easy to use interfaces for DNN training scenarios like<strong> image classification<\/strong>, <strong>object detection<\/strong> and <strong>text classification<\/strong>.<\/p>\n<p>The below API code example shows how easily you can train a new <strong>TensorFlow<\/strong> model which under the covers is based on <strong>transfer learning<\/strong> from a selected architecture (pre-trained model) such as <strong>Inception v3<\/strong> or <strong>Resnet<\/strong>.<\/p>\n<p><i>Image classifier high level API code using transfer learning from Inceptionv3 pre-trained model<\/i><\/p>\n<pre class=\"lang:default decode:true\">var pipeline = mlContext.Transforms.Conversion.MapValueToKey(outputColumnName: \"LabelAsKey\", inputColumnName: \"Label\")\r\n               .Append(mlContext.Model.ImageClassification(\"ImagePath\", \"LabelAsKey\",\r\n                            arch: ImageClassificationEstimator.Architecture.InceptionV3));  \/\/Can also use ResnetV2101\r\n                            \r\n\/\/ Train the model\r\nITransformer trainedModel = pipeline.Fit(trainDataView);\r\n\r\n<\/pre>\n<p>The important line in the above code is the one using the <code>mlContext.Model.ImageClassification<\/code> classifier trainer which as you can see is a high level API where you just need to select the base pre-trained model to derive from, in this case <a href=\"https:\/\/cloud.google.com\/tpu\/docs\/inception-v3-advanced\">Inception v3<\/a>, but you could also select other pre-trained models such as <a href=\"https:\/\/medium.com\/@bakiiii\/microsoft-presents-deep-residual-networks-d0ebd3fe5887\">Resnet v2101<\/a>. Inception v3 is a widely used image recognition model trained on the <a href=\"http:\/\/www.image-net.org\/\">ImageNet dataset<\/a>. Those pre-trained models or architectures are the culmination of many ideas developed by multiple researchers over the years and you can easily take advantage of it now.<\/p>\n<p>The DNN Image Classification training API is still in early preview and we hope to get feedback from you that we can incorporate in the next upcoming releases.<\/p>\n<p>For further learning see this <a href=\"https:\/\/github.com\/dotnet\/machinelearning-samples\/tree\/master\/samples\/csharp\/getting-started\/DeepLearning_ImageClassification_Training\">sample app training a custom TensorFlow model with provided images<\/a>.<\/p>\n<h2>Enhanced for .NET Core 3.0<\/h2>\n<p><a href=\"https:\/\/dot.net\/ml\">ML.NET<\/a> is now building for .NET Core 3.0. This means ML.NET can take advantage of the new features when running in a .NET Core 3.0 application. The first new feature we are using is the new hardware intrinsics feature, which allows .NET code to accelerate math operations by using processor specific instructions.<\/p>\n<p>Of course, you can still run <a href=\"https:\/\/dot.net\/ml\">ML.NET<\/a> on older versions, but when running on .NET Framework, or .NET Core 2.2 and below, <a href=\"https:\/\/dot.net\/ml\">ML.NET<\/a> uses C++ code that is hard-coded to x86-based SSE instructions. SSE instructions allow for four 32-bit floating-point numbers to be processed in a single instruction. Modern x86-based processors also support AVX instructions, which allow for processing eight 32-bit floating-point numbers in one instruction. <a href=\"https:\/\/dot.net\/ml\">ML.NET<\/a>\u2019s C# hardware intrinsics code supports both AVX and SSE instructions and will use the best one available. This means when training on a modern processor, <a href=\"https:\/\/dot.net\/ml\">ML.NET<\/a> will now train faster because it can do more concurrent floating-point operations than it could with the existing C++ code that only supported SSE instructions.<\/p>\n<p>Another advantage the C# hardware intrinsics code brings is that when neither SSE nor AVX are supported by the processor, for example on an ARM chip, <a href=\"https:\/\/dot.net\/ml\">ML.NET<\/a> will fall back to doing the math operations one number at a time. This means more processor architectures are now supported by the core <a href=\"https:\/\/dot.net\/ml\">ML.NET<\/a> components. (Note: There are still some components that don\u2019t work on ARM processors, for example FastTree, LightGBM, and OnnxTransformer. These components are written in C++ code that is not currently compiled for ARM processors.)<\/p>\n<p>For more information on how <a href=\"https:\/\/dot.net\/ml\">ML.NET<\/a> uses the new hardware intrinsics APIs in .NET Core 3.0, please check out Brian Lui\u2019s blog post <a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/using-net-hardware-intrinsics-api-to-accelerate-machine-learning-scenarios\/\">Using .NET Hardware Intrinsics API to accelerate machine learning scenarios<\/a>.<\/p>\n<h2>Model Builder in VS and CLI updated to latest GA version<\/h2>\n<p>The Model Builder tool in Visual Studio and the ML.NET CLI (both in preview) have been updated to use the latest ML.NET GA version (1.3) and addresses lots of customer feedback. Learn more about the changes <a href=\"https:\/\/github.com\/dotnet\/machinelearning\/pull\/3725\">here<\/a>.\n<img decoding=\"async\" class=\"alignnone wp-image-24281\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2019\/08\/model-builder-screenshot.png\" alt=\"\" width=\"732\" height=\"468\" srcset=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2019\/08\/model-builder-screenshot.png 3000w, https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2019\/08\/model-builder-screenshot-300x192.png 300w, https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2019\/08\/model-builder-screenshot-768x492.png 768w, https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2019\/08\/model-builder-screenshot-1024x656.png 1024w\" sizes=\"(max-width: 732px) 100vw, 732px\" \/><\/p>\n<h3>Model Builder updated to latest ML.NET GA version<\/h3>\n<p>Model Builder uses the latest GA version of <a href=\"https:\/\/dot.net\/ml\">ML.NET<\/a> (1.3) and therefore the generated C# code also references ML.NET 1.3.<\/p>\n<h3>Improved support for other OS cultures<\/h3>\n<p><span style=\"font-family: Calibri;\"><span style=\"color: #000000;\">This addresses many frequently reported issues where developers want to use their own local culture OS settings to train a model in Model Builder. Please read this <\/span><a href=\"https:\/\/github.com\/dotnet\/machinelearning\/issues\/3729\">issue<\/a><span style=\"color: #000000;\"> for more details.<\/span><\/span><\/p>\n<h3>Customer feedback addressed for Model Builder<\/h3>\n<p>There were many issues fixed in this release. Learn more in the\u00a0<a href=\"https:\/\/github.com\/dotnet\/machinelearning-modelbuilder\/releases\">release notes<\/a>.<\/p>\n<h2>New sample apps<\/h2>\n<p>Coinciding with this new release, we\u2019re also announcing new interesting sample apps covering additional scenarios:<\/p>\n<table>\n<tbody>\n<tr>\n<td><img decoding=\"async\" class=\"alignnone size-full wp-image-24288\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2019\/08\/icon-forecast.png\" alt=\"\" width=\"75\" height=\"75\" \/><\/td>\n<td>\u00a0 <a href=\"https:\/\/github.com\/dotnet\/machinelearning-samples\/tree\/master\/samples\/csharp\/end-to-end-apps\/Forecasting-Sales\">Sales forecast scenario based on Time Series SSA (Single Spectrum Analysis)<\/a><\/td>\n<\/tr>\n<tr>\n<td><img decoding=\"async\" class=\"alignnone size-full wp-image-24285\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2019\/08\/icon-anomaly-detection.png\" alt=\"\" width=\"75\" height=\"75\" \/><\/td>\n<td>\u00a0 <a href=\"https:\/\/github.com\/dotnet\/machinelearning-samples\/tree\/master\/samples\/csharp\/getting-started\/AnomalyDetection_CreditCardFraudDetection\">Credit Card Fraud Detection scenario based on Anomaly Detection PCA<\/a><\/td>\n<\/tr>\n<tr>\n<td><img decoding=\"async\" class=\"alignnone size-full wp-image-24291\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2019\/08\/icon-ranking.png\" alt=\"\" width=\"75\" height=\"75\" \/><\/td>\n<td>\u00a0 <a href=\"https:\/\/github.com\/dotnet\/machinelearning-samples\/tree\/master\/samples\/csharp\/getting-started\/Ranking_Web\">Search engine sorted results scenario based on Ranking task<\/a><\/td>\n<\/tr>\n<tr>\n<td><img decoding=\"async\" class=\"alignnone wp-image-24290\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2019\/08\/icon-model-explainability.png\" alt=\"\" width=\"73\" height=\"75\" \/><\/td>\n<td>\u00a0 <a href=\"https:\/\/github.com\/dotnet\/machinelearning-samples\/tree\/master\/samples\/csharp\/end-to-end-apps\/Model-Explainability\">Model Explainability and feature importance<\/a><\/td>\n<\/tr>\n<tr>\n<td><img decoding=\"async\" class=\"alignnone size-full wp-image-24287\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2019\/08\/icon-database.png\" alt=\"\" width=\"75\" height=\"75\" \/><\/td>\n<td>\u00a0 <a href=\"https:\/\/github.com\/dotnet\/machinelearning-samples\/tree\/master\/samples\/csharp\/getting-started\/DatabaseLoader\">Database Loader (Native Database Loader for relational databases)<\/a><\/td>\n<\/tr>\n<tr>\n<td><img decoding=\"async\" class=\"alignnone size-full wp-image-24289\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2019\/08\/icon-image.png\" alt=\"\" width=\"75\" height=\"75\" \/><\/td>\n<td>\u00a0 <a href=\"https:\/\/github.com\/dotnet\/machinelearning-samples\/tree\/master\/samples\/csharp\/getting-started\/DeepLearning_ImageClassification_Training\">Deep Learning training: Image Classification DNN re-train (Transfer Learning)<\/a><\/td>\n<\/tr>\n<tr>\n<td><img decoding=\"async\" class=\"alignnone wp-image-24286\" src=\"https:\/\/github.com\/dotnet\/machinelearning-samples\/raw\/master\/images\/web.png\" alt=\"\" width=\"80\" height=\"80\" \/><\/td>\n<td><a href=\"https:\/\/github.com\/dotnet\/machinelearning-samples\/tree\/master\/samples\/csharp\/end-to-end-apps\/ScalableMLModelOnAzureFunction\">Scalable ML.NET model on ASP.NET Core Razor web app (C#)<\/a><\/td>\n<\/tr>\n<tr>\n<td><img decoding=\"async\" class=\"alignnone wp-image-24286\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2019\/08\/icon-azure-functions.png\" alt=\"\" width=\"88\" height=\"77\" \/><\/td>\n<td>\u00a0 <a href=\"https:\/\/github.com\/dotnet\/machinelearning-samples\/tree\/master\/samples\/csharp\/end-to-end-apps\/ScalableMLModelOnAzureFunction\">Scalable ML.NET model on Azure Function (C#)<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<h2>New ML.NET video playlist at YouTube<\/h2>\n<p>We have created a <a href=\"https:\/\/dot.net\/ml\">ML.NET<\/a> <strong>Youtube playlist<\/strong> at the <strong>.NET foundation channel<\/strong> with a list made of selected videos, each video focusing on a single and particular <a href=\"https:\/\/dot.net\/ml\">ML.NET<\/a> feature, so it is great for learning purposes.<\/p>\n<p>Access here the <a href=\"https:\/\/aka.ms\/mlnetyoutube\">ML.NET Youtube playlist<\/a>.<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-24292\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2019\/08\/youtube-mlnet-playlist.png\" alt=\"\" width=\"843\" height=\"492\" srcset=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2019\/08\/youtube-mlnet-playlist.png 2048w, https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2019\/08\/youtube-mlnet-playlist-300x175.png 300w, https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2019\/08\/youtube-mlnet-playlist-768x448.png 768w, https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2019\/08\/youtube-mlnet-playlist-1024x597.png 1024w\" sizes=\"(max-width: 843px) 100vw, 843px\" \/><\/p>\n<p>&nbsp;<\/p>\n<h2>Try ML.NET and Model Builder today!<\/h2>\n<p><img decoding=\"async\" src=\"https:\/\/user-images.githubusercontent.com\/1712635\/55659651-67959a00-57b7-11e9-8916-408bd841b1bf.png\" \/><\/p>\n<ul>\n<li>Get started with <a href=\"https:\/\/dot.net\/ml\">ML.NET<\/a>\u00a0<a href=\"https:\/\/www.microsoft.com\/net\/learn\/apps\/machine-learning-and-ai\/ml-dotnet\/get-started\">here<\/a>.<\/li>\n<li>Get started with Model Builder\u00a0<a href=\"https:\/\/aka.ms\/modelbuilder\">here<\/a>.<\/li>\n<li>Refer to <a href=\"https:\/\/docs.microsoft.com\/dotnet\/machine-learning\/\">documentation<\/a> for tutorials and more resources.<\/li>\n<li>Learn from <a href=\"https:\/\/github.com\/dotnet\/machinelearning-samples\">samples apps<\/a> for different scenarios using ML.NET.<\/li>\n<\/ul>\n<h2>Summary<\/h2>\n<p>We are excited to release these updates for you and we look forward to seeing what you will build with ML.NET. If you have any questions or feedback, you can ask them here for <a href=\"https:\/\/github.com\/dotnet\/machinelearning\/issues\">ML.NET<\/a> and <a href=\"https:\/\/aka.ms\/modelbuilderissues\">Model Builder<\/a>.<\/p>\n<p>Happy coding!<\/p>\n<p>The <a href=\"https:\/\/dot.net\/ml\">ML.NET<\/a>\u00a0team.<\/p>\n<p><span style=\"font-size: 12pt;\"><i><span style=\"font-family: Segoe UI;\"><span style=\"color: #333333;\">This blog was authored by Cesar de la Torre and Eric Erhardt plus additional contributions of the\u00a0<\/span><a href=\"https:\/\/dot.net\/ml\" rel=\"nofollow\">ML.NET<\/a><span style=\"color: #333333;\">\u00a0team.<\/span><\/span><\/i><\/span><\/p>\n<p>&nbsp;<\/p>\n<h3>Acknowledgements<\/h3>\n<ul>\n<li>As mentioned above, we would like to acknowledge the effort and say thank you to the <a href=\"https:\/\/github.com\/SciSharp\/TensorFlow.NET\">Tensorflow.NET library<\/a> team for their agility and great collaboration with us. Special <em>kudos<\/em> for <strong>Haiping<\/strong> (<a title=\"https:\/\/gitter.im\/oceania2018\" href=\"https:\/\/gitter.im\/Oceania2018\"><strong>Oceania2018<\/strong>.<\/a>)<\/li>\n<li>Special thanks for <strong>Jon Wood<\/strong> (<strong><a href=\"https:\/\/twitter.com\/JWood\">@JWood<\/a><\/strong>) for his many and great YouTube videos on <a href=\"https:\/\/dot.net\/ml\">ML.NET<\/a>\u00a0that we&#8217;re also pointing from our <a href=\"https:\/\/dot.net\/ml\">ML.NET<\/a>\u00a0YouTube playlist mentioned in the blog post. Also, thanks for being an early adopter and tester for the new DatabaseLoader.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We are excited to announce ML.NET 1.4 Preview and updates to Model Builder\u00a0and\u00a0CLI. ML.NET\u00a0is an open-source and cross-platform machine learning framework for .NET developers. ML.NET\u00a0also includes Model Builder\u00a0(a simple UI tool) and\u00a0CLI\u00a0to make it super easy to build custom Machine Learning (ML) models using Automated Machine Learning (AutoML). Using\u00a0ML.NET, developers can leverage their existing tools [&hellip;]<\/p>\n","protected":false},"author":362,"featured_media":24299,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[756,688,691],"tags":[],"class_list":["post-24260","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-csharp","category-machine-learning","category-ml-dotnet"],"acf":[],"blog_post_summary":"<p>We are excited to announce ML.NET 1.4 Preview and updates to Model Builder\u00a0and\u00a0CLI. ML.NET\u00a0is an open-source and cross-platform machine learning framework for .NET developers. ML.NET\u00a0also includes Model Builder\u00a0(a simple UI tool) and\u00a0CLI\u00a0to make it super easy to build custom Machine Learning (ML) models using Automated Machine Learning (AutoML). Using\u00a0ML.NET, developers can leverage their existing tools [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts\/24260","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/users\/362"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/comments?post=24260"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts\/24260\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/media\/24299"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/media?parent=24260"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/categories?post=24260"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/tags?post=24260"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}