基于.NET下的人工智能|利用ICSharpCore搭建基于.NET Core的机器学习和深度学习的本地开发环境

每个人都习惯使用Python去完成机器学习和深度学习的工作,但是对于习惯于某种特定语言的人来说,转型不是那么容易的事。 这两年我花了不少时间在Python,毕竟工作的重心也从移动开发转为机器学习和深度学习。 感谢我的老板给我很大的空间去开拓新的领域,但对于不少企业这种转型需要时间,金钱的成本。 我一直说,做编码就如打功夫,无论哪个门派都是一个技术栈,你寄望一套拳法可以把所有对手打倒。 现阶段最好的跨平台生态已经不再是Java , 你想到的是JavaScript ,还有.NET 。 或者不少人会有质疑,但现状就是这样。 我今天不谈JavaScript, 重点谈谈.NET Core. 自从微软重新去把.NET 重新规划后,不少的企业或者Startup也开始试水这个既熟悉又陌生的技术环境。 如果你执着地坚持着.NET , 你会为现在.NET 那七颗龙珠感到惊喜。 从以往桌面/网页,到现在的移动,物联网,云计算,游戏,还有人工智能,更是一个跨平台的解决方案。

在技术领域,一个完整的生态,少不了有不错的开源社区。 现在.NET Core的开源社区在不断壮大,在机器学习和深度学习领域除了有官方支持的ML.NET外, 还有Miguel大神的TensorFlowSharp ,更可喜的是有一个基于.NET Core的机器学习和深度学习的技术开源社区SciSharp(https://github.com/SciSharp)。 SciSharp 有不少和 Python 机器学习/深度学习的融入的项目,方便.NET Core的程序员无缝融入到机器学习/深度学习的环境中去,更重要一点是你可以继续用你的C#。 如果你是一个.NETer,估计也会喜欢上这个开源的项目。 毕竟从Jupyter Notebook的支持,到机器学习相关的Numpy.NET / NumpySharp, Pandas.NET , SciSharp , scikit-learn , 到深度学习的Tensorflow.NET , KerasuNET , Torch.NET ,还有自然语言的BotSharp , SpaCy.NET 都做了.NET Core的移植。 一个技术生态好与坏,就看你的开源项目质量了。 这是一个不错的开端。

传统的机器学习/深度学习的工作方式,和我们写代码不一样,基于Jupyter Notebook,通过ICSharpCore

(https://github.com/SciSharp/ICSharpCore)你可以为Jupyter Notebook 添加C#的支持。 如果你是传统程序员,你会喜欢IDE ,但在机器学习/深度学习的环境你更应该在Jupyter Notebook上开发。 你可以通过Docker去部署这个环境(https://github.com/SciSharp/SciSharpCube之前社区好友分享过文章),但考虑到更高性能个人推荐还是在本机运行。 我来补充下在本机的一些配置方法,你还是得安装Python, 建议还是装3.6.x / 3.7 , 还有别忘记通过pip去安装jupyter(pip3 install jupyter),。 毕竟这个解决方案还是得要一个标准的Python做支持。 接下来就是一些很.NET Core的事情了

1

去下载一份

ICSharpCore(https://github.com/SciSharp/ICSharpCore)

的源码在本地编译,会生成dll,这里得提提如果你希望你的ICSharpCore环境支持ML.NET 你需要在改项目下通过dotnet add package添加ML.NET的支持

2

如果快乐是一种发明,它很容易被一再发明。 by 小饭

3

去kernel-spec目录下修改kernel.json , 指定好刚才编译生成的ICSharpCore.dll的路径

4

回到ICSharpCore目录下执行 jupyter kernelspec install kernel-spec –name=csharpcore  通过运行语句jupyter kernelspec list 检查是否成功添加