曾经学习过一段时间ML.NET的知识,ML.NET是微软提供的一套机器学习框架,相对于其他的一些机器学习框架,ML.NET侧重于消费现有的网络模型,不太好自定义自己的网络模型,底层实现也做了高度封装。
最近想从底层学习一下机器学习的相关知识,经过初步筛选,计划定位于python + pytorch这个方向入手,经过一段时间的学习,我发现由于对python语言不太熟悉,导致实践起来比较困难,先不说机器学习相关的代码,光周边代码就搞得焦头烂额了。想要下决心好好修炼一下python必然不是一朝一夕的事情,所以考虑是否学一个采用C#的机器学习框架,这样就可以专心研究目标代码,配套服务就可以轻松搞定了。
经搜索发现了SciSharp-Stack这个项目,一开始我定位于Torch.Net,最终选择了TensorFlow.NET这个框架。选择TensorFlow.NET主要是因为如下几个原因:
- 示例比较丰富,第一次下载、编译、运行都很顺利。(如果开源项目提供的HelloWorld项目跑不起来的话,就没有信心使用了)
- 代码一直在更新,社区比较活跃,Issue上问问题会有人回答;
- 架构比较合理,通过.NET对google提供的原生动态链接库进行封装,和我们使用MySQL.Data的架构类似,C#开发人员很熟悉这种架构;
- 代码风格接近python+tensorflow的实现方式,便于参考网络上大量python的例程。
这个系列的文章就是我这段时间学习TensorFlow.Net的心得体会,整个系列的文章目录如下:
- TensorFlow.NET机器学习入门【1】开发环境与类型简介
- TensorFlow.NET机器学习入门【2】线性回归
- TensorFlow.NET机器学习入门【3】采用神经网络实现非线性回归
- TensorFlow.NET机器学习入门【4】采用神经网络处理分类问题
- TensorFlow.NET机器学习入门【5】采用神经网络实现手写数字识别(MNIST)
- TensorFlow.NET机器学习入门【6】采用神经网络处理Fashion-MNIST
- TensorFlow.NET机器学习入门【7】采用卷积神经网络(CNN)处理Fashion-MNIST
- TensorFlow.NET机器学习入门【8】采用GPU进行学习
- TensorFlow.NET机器学习入门【9】生成对抗网络GAN(AI绘制二次元妹子)
由于作者本人对于机器学习的认识还处于入门阶段,写作过程中难免存在纰漏,如果您发现有什么错误的地方,请及时指出来。
【参考资料】
《深度学习入门:基于Python的理论与实践(斋藤康毅)》