8 ms·
Machine Learning for .NET
- zamalek 8y agoIt doesn't really come across as a framework, it's more of an API. A framework would allow you to invent new approaches (such as ODE networks), where-as this API supports the models that ship with it and nothing else. That's fine, but it's not in the same space as Tensorflow etc.
- minxomat 8y agoTensorflow models can be used in ML.NET and the API is open to suggestions for what to support next. https://blogs.msdn.microsoft.com/dotnet/2018/09/12/announcing-ml-net-0-5/ https://blogs.msdn.microsoft.com/dotnet/2018/09/12/announcin...
- startupdiscuss 8y agoSounds like you can get the results of a premade and trained TF model, but you can't build your own model or train it.
- avinium 8y agoMicrosoft's deep learning "train/inference" framework is CNTK, which exists alongside ML.NET (although as it's sorely lagging other deep learning frameworks and I'm convinced it's not a priority for Microsoft, they've basically given up on it). I think the target use case for ML.NET is really putting existing machine learning models into production in .NET. That's not limited to deep learning (it supports "traditional" ML models like logistic regression out of the box), but a first-party wrapper for tensorflow models is useful (which previously required vectorizing everything by hand and passing to TensorflowSharp) Training vanilla models is "nice to have" but the real value is in putting trained models into production. Generally speaking, the ML.NET API still needs a lot of work. I think they're partway through switching from a "LearningPipeline" API to a "Data/Transformer/Estimator" API, but some of the documentation refer to the former, some to the latter, some new methods still require legacy classes, the naming conventions aren't clear and not all of it is strongly-typed so you won't know until runtime whether you've passed the correct Transform/Estimator, on the whole it's a bit confusing. That being said, it still hasn't hit 1.0, so I think the team is aware that the API needs further work. If they standardize 1.0 on the Data/Transformer/Estimator, blow away the legacy classes and update the documentation, it will be a pretty nice framework for production.
- singularity2001 8y ago> the target use case for ML.NET is really putting existing machine learning models into production in .NET. this should be exactly the first sentence in the git repository. to confirm the original commenter: this API is mostly for deploying networks, not so much for training/developing new models etc
- sandyarmstrong 8y agoYou can train your own model. See https://dotnet.microsoft.com/learn/machinelearning-ai/ml-dotnet-get-started-tutorial https://dotnet.microsoft.com/learn/machinelearning-ai/ml-dot...
- clauren 8y agoYou can definitely train your own models too...samples at https://github.com/dotnet/machinelearning-samples https://github.com/dotnet/machinelearning-samples
- srean 8y agoI think you and startupdiscus are using two different notions of "my own model". I think by "my own model" you mean that I can use my own data to train a pre-existing models that is built into ML.net. Typically, that's not quite what "my model" means. Say I come up with a completely new learning to rank algorithm, or I fancy a new one that I saw in one of the ML conferences. Now if I were to build that with ML.net that would be "my model" according to startupdiscuss and many others. In startupdiscuss' sense, ML.net would allow building own models if it offers building-blocks, abstractions, and other facilities, for examples, vectors, matrices, tensors, linear algebraic operations, computation-graph, etc that allow building them.
- unsignedint 8y agoI've played around with Accord.NET [0] before and it seems like it's bit more complete as framework. Not that I have done too much ML stuff beyond experimenting, it seems to be Accord.NET is a lot more abstracted compared to TensorFlow... [0]: http://accord-framework.net/ http://accord-framework.net/
- ankitasthana 8y agoML.NET is really a framework which provides ability to build custom traditional machine learning algorithms for a number of scenarios like (classification, regression, recommendation etc.). ML.NET is also extensible, which means we can absorb other leading deep learning frameworks like TensorFlow and Accord.NET through one consistent API providing a uniform way to do ML in .NET. Here's a link to the samples: https://github.com/dotnet/machinelearning-samples https://github.com/dotnet/machinelearning-samples
- deleted 8y ago[deleted]
- ankitasthana 8y agoML.NET is a machine learning framework which is aimed at providing the E2E workflow for infusing ML into .NET apps across pre-processing, feature engineering, modeling, evaluation, and model consumption. The base framework comes with a variety of transforms, trainers, utility apis for loading varies forms of data (e.g. csv's, tsv's) to build custom machine learning models trained with your own data. Using the API you can build a variety of models for scenarios like Sentiment analysis (classification), forecasting, recommendation and also leverage pre-built Tensorflow models for scenarios like image classification. The samples repo provided shows you a variety of scenarios with ML.NET. https://github.com/dotnet/machinelearning-samples https://github.com/dotnet/machinelearning-samples @zamalek, would love to learn how we can improve the API to make this stand out :).
- zamalek 8y ago"Framework" (contained in the original title of this post) implies that you can "build your own thing" with the library. CNTK and Tensorflow are frameworks. ML.NET only has what's in the box, it's turn-key. You guys have an explicit ResNet18 assembly, as one example. While this is incredibly useful, it is not appropriate to call such a library a framework. A possible improvement would be: ML.NET is a machine learning API which is aimed at providing turn-key models for infusing ML... If you wanted it to classify as a framework, you'd have to provide something like Tensorflow does: a way to develop new and novel models. That's just my opinion, but a few people seem to agree.
- nickspag 8y agoYou can absolutely train your own models. Your comment is patently false and a fraction of the time it took to write it should have been spent reading that API you have so inaptly described. I encourage you to delete it.
- zamalek 8y agoYou can use it to train the models that they have built. You can't make new models. I've done quite a bit of research into ML.NET because the nomenclature lead me to believe that it can fill the role of Tensorflow.
- manigandham 8y agoThey've been releasing versions monthly, here are the last few release notes: v0.7 = https://blogs.msdn.microsoft.com/dotnet/2018/11/08/announcing-ml-net-0-7-machine-learning-net/ https://blogs.msdn.microsoft.com/dotnet/2018/11/08/announcin... v0.6 = https://blogs.msdn.microsoft.com/dotnet/2018/10/08/announcing-ml-net-0-6-machine-learning-net/ https://blogs.msdn.microsoft.com/dotnet/2018/10/08/announcin... v0.5 = https://blogs.msdn.microsoft.com/dotnet/2018/09/12/announcing-ml-net-0-5/ https://blogs.msdn.microsoft.com/dotnet/2018/09/12/announcin...
- InGodsName 8y agoWhy .NET isn't used for data sciences? Does it have numpy alternative?
- InGodsName 8y agoI don't know why would anyone downvote honest question. Damn you hn!
- ankitasthana 8y agoThe base ML.NET framework comes with a variety of numpy alternatives, datatypes for heterogenous (IDataView) and homogenous (VBuffer) data, a variety of transforms for data pre-processing, feature extraction (e.g. OneHotCodeEncoding), Missing values, normalization etc. handy for common ML scenarios like classification, regression, recommendation etc. you can find the full list here. Types:https://github.com/dotnet/machinelearning/blob/master/docs/code/IDataViewDesignPrinciples.md https://github.com/dotnet/machinelearning/blob/master/docs/c... Transforms: https://docs.microsoft.com/en-us/dotnet/machine-learning/resources/transforms https://docs.microsoft.com/en-us/dotnet/machine-learning/res...
- amhenk 8y agoI think it's because there aren't as many mature libraries for data scientist to use. That and prototyping isn't as friendly as it is in something like Python. In terms of things similar to numpy there's Accord.NET which is a very solid library but as far as I know, it's really the only mature/common one used. Another thing is that .NET more or less focuses on traditional software development which I think can be considered cumbersome to work with if you're trying to test stuff quickly. Little disclaimer, I'm not a data scientist but these are things I've noticed while deving with .NET so I'm not sure how much they actually apply to the day to day for a data scientist.
- Rapzid 8y agoPrototyping in Python for a large subset of people is NOT friendly. To quote a famous book or something; "My God, it's full of shapes!". Shapes whose shape matter, just not so much to the language and tooling you interface with them from. It's like trying to drive a 3d world from a 2d world :| IMHO F# has the potential to be WAY more friendly for prototyping and more. It's all a matter of the libs.
- brianberns 8y agoDoes this compete with the Microsoft Cognitive Toolkit (CNTK)? Seems odd that they would have two separate ML frameworks. https://www.microsoft.com/en-us/cognitive-toolkit/ https://www.microsoft.com/en-us/cognitive-toolkit/
- clauren 8y agoNo, cntk is focused on deep learning and ml.net is more focused on traditional ML as well as making it easier to deploy trained deep learning Tensorflow or ONNX models in your apps and services
- ankitasthana 8y agoThe way to think about ML.NET is really a higher level framework which comes built in with traditional ML trainers, transforms etc. and through its extensibility allows .NET developers to also use other leading frameworks for deep learning e.g. TensorFlow and standards e.g. ONNX models using one uniform set of APIs. You can learn more about ML.NET here: https://dotnet.microsoft.com/apps/machinelearning-ai/ml-dotnet https://dotnet.microsoft.com/apps/machinelearning-ai/ml-dotn...
- Rapzid 8y agoFor those who are not aware, there is https://github.com/migueldeicaza/TensorFlowSharp https://github.com/migueldeicaza/TensorFlowSharp for your arbitrary TF in DotNet needs. Last I played with it, it even work well in F#. Which, let's be honest here, is the dream right? Right?!
- Melchizedek 8y agoTensorFlowSharp has bindings to the C API of TensorFlow, but no implementations of the Python stuff that you really need for training, such as optimizers. I really want to use F# for training deep learning models, but at this point it doesn't seem feasible, at least not without a lot of hassle compared to using Python.
- Rapzid 8y agoHmm, didn't realize that; I only ever really verified it worked and worked with F# haha. In the scheme of things the optimizers are rather small bits that could be encapsulated quickly.. Poking around it looks like Accord.Net is interested in getting CNN support in via TensorFlowSharp: https://github.com/accord-net/framework/issues/92 https://github.com/accord-net/framework/issues/92 . Then there is ConvNetSharp. I'm sure a fun project for someone would also be to implement all this in a pure F# library. It supposedly has some pretty good GPU libs.
- lostmsu 8y agoHere's my project in non-public tech preview. Not open source, but free for non-commercial. https://github.com/losttech/Gradient-Samples https://github.com/losttech/Gradient-Samples
- rajadigopula 8y agoAlso worthy of mentioning - https://dotnet.github.io/infer/ https://dotnet.github.io/infer/ . Infer.Net for Bayesian ML.
- lwansbrough 8y agoAnyone know if ML.NET will be capable of online anomaly detection?
- ankitasthana 8y agoHere is an example of anomaly detection with ML.NET its not online learning based however. https://blogs.msdn.microsoft.com/dotnet/2018/11/08/announcing-ml-net-0-7-machine-learning-net/#enabled-anomaly-detection-scenarios-and-detecting-unusual-events https://blogs.msdn.microsoft.com/dotnet/2018/11/08/announcin...