News for hackers. Stuff that matters.
Re:Machine Learning for .NET by zamalek on Thursday December 20, 2018 @04:14PM (#18729180)
It 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.
Re:Machine Learning for .NET by ankitasthana on Thursday December 20, 2018 @07:14PM (#18730448)
ML.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

@zamalek, would love to learn how we can improve the API to make this stand out :).

Re:Machine Learning for .NET by eldavido on Thursday December 20, 2018 @10:50PM (#18731291)
Microsoft alumnus here...it's so obvious you work there.

"End-to-end", "workflow", "across X, Y, Z, A", "scenarios". I'd just started to forget that language, but there it is. (The "local dialect" at Microsoft strikes again)

Re:Machine Learning for .NET by zamalek on Thursday December 20, 2018 @07:44PM (#18730600)
"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.

Re:Machine Learning for .NET by sitharus on Thursday December 20, 2018 @08:33PM (#18730815)
Having used this framework you absolutely use it to train and create novel classification models. I used it to train financial transaction classification models, it works quite well.
Re:Machine Learning for .NET by nickspag on Thursday December 20, 2018 @08:28PM (#18730787)
You 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.
Re:Machine Learning for .NET by zamalek on Friday December 21, 2018 @12:42AM (#18731628)
You 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.
Re:Machine Learning for .NET by jf- on Thursday December 20, 2018 @07:46PM (#18730604)
Can you confirm whether or not you can train tensorflow with this? Your example on github has a pre-trained model. Easy integration of pre-trained models is great, but it should state up-front whether you can use it to build and train one.
Re:Machine Learning for .NET by clauren on Thursday December 20, 2018 @08:32PM (#18730810)
You can train classic machine learning models like classification and regression as well as decision trees and more, or you can use pre-trained deep neural networks (Tensorflow, ONNX)
Re:Machine Learning for .NET by jf- on Thursday December 20, 2018 @08:45PM (#18730871)
I'm guessing you're from microsoft. The message that you seem to be getting here is that when people first see ML.NET they think Tensorflow, including being able to train it. They take a look around your examples looking for training examples and don't find them, and are then annoyed that this was not stated up front.

It does not lower the value of ML.NET to clearly state that it does not allow building and training tensorflow models, it actually prevents annoyance at having to dig around and figure it out from lack of examples. It should be stated in the readme.md before the installation section.

I'll add that there is very little point in coming onto HN and looking for the community's feedback if you're going to ignore it.

Re:Machine Learning for .NET by clauren on Thursday December 20, 2018 @09:36PM (#18731059)
That's fair and it's a good idea. I'll make sure we update the docs to be more clear. Ml.net does enable retraining TF models too so will make sure we publish examples too
Re:Machine Learning for .NET by jf- on Thursday December 20, 2018 @09:59PM (#18731138)
Good to hear! Other than that I'm enthusiastic about the development of ML.NET, I'll definitely be getting a lot of value out of it moving forward.
Re:Machine Learning for .NET by minxomat on Thursday December 20, 2018 @04:34PM (#18729345)
Tensorflow 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/announcin...
Re:Machine Learning for .NET by startupdiscuss on Thursday December 20, 2018 @04:40PM (#18729389)
Sounds like you can get the results of a premade and trained TF model, but you can't build your own model or train it.
Re:Machine Learning for .NET by avinium on Thursday December 20, 2018 @04:58PM (#18729532)
Microsoft'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.

Re:Machine Learning for .NET by singularity2001 on Thursday December 20, 2018 @05:33PM (#18729806)
> 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

Re:Machine Learning for .NET by clauren on Thursday December 20, 2018 @06:55PM (#18730342)
You can definitely train your own models too...samples at https://github.com/dotnet/machinelearning-samples
Re:Machine Learning for .NET by srean on Friday December 21, 2018 @04:46AM (#18732339)
I 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.

Re:Machine Learning for .NET by sandyarmstrong on Thursday December 20, 2018 @05:37PM (#18729841)
Re:Machine Learning for .NET by unsignedint on Thursday December 20, 2018 @05:37PM (#18729838)
I'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/

Re:Machine Learning for .NET by ankitasthana on Thursday December 20, 2018 @07:18PM (#18730469)
ML.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