算法在C#端落地的心得

0.前言

不知不觉已经从软件转算法三个月了,这三个月也是经历了很多,从坚定到迷茫,再从迷茫到现在的逐渐清晰。

1.坚定到迷茫

刚开始来算法部的时候感觉自己可以放手大干了,不用再受软件部那些框架的束缚了。道理是这个道理,没有框架的束缚导致的结果就是什么东西都要自己做。
因为算法部算是一个新部门,之前很多算法都是依赖于软件部来实现的,算法部门这边只负责研究、出文档。所以对于算法的落地研究基本为0。算法研究语言的选取,文档如何呈现,如何在C#端落地等都是我们需要考虑的问题。也得益于之前学习的敏捷开发相关的知识:可以工作的软件胜过面面俱到的文档,响应变化胜过遵循计划。既然想不到那么多就先做吧,东西做出来用起来就知道有哪些问题了。所以我一直在致力于如何不写文档,如何将算法内容通过jupyer展现出来,如何jupyter中的内容打印成pdf…做着做着发现,没有文档在我们公司不太可能,不管是你做汇报还是搞考核,都需要写文档,而且自己写出来的文档确实也有够难看的。另外,对于写python语言的这种你永远也不知道一个变量是什么,下一步对不对的感觉也非常蛋疼。在面向对象上和C#差距有点大,虽然配合了tdd,但是在工程化,落地等方面都有着不少的挑战。到底如何配合?这时,我迷茫了…

2.从迷茫到清晰

迷茫,但是活你还得干啊。就顺着之前的思路一直在做现有的东西。好在之前学习了很多软件开发的经典理论,什么重构、tdd、设计模式啊,这些都是能用得上的,需要注意的是动态语言和静态语言在很多方面都有不少的差别,这个需要在用的时候多查查资料。在算法如何配合jupyter开发时,我找到了《The Importance of Structure, Coding Style, and Refactoring in Notebooks》这篇文章,大概讲的也是及时重构,多多运行测试代码,和tdd的理念大概相似,之不过具体的实现细节需要自己去思考,也算了解了主流数据分析开发是如何做的了。了解归了解,最终如何在公司的环境下施行,还需要因地制宜,这里可以称做**特色算法开发道路吧。落地方面之前一直考虑的是将算法包装在服务中,通过rpc接口向外提供建模预测功能,可行是可行,但是在部署阶段有着不小的难度,现场电脑需要安装python环境,各种依赖包,考虑算法服务如何启动,然后制定通讯接口也要花费不少精力。所以在开发出第一版算法后,我就在积极寻找其它的落地途径。在github上搜索Tensorflow.Net,好家伙,还真有,后来就一直调研.Net端的一些算法库,看来开源了就是不一样,网上的大神们整出了一个SciSharp的开源社区,很好的解决了算法落地痛点问题,不过这些库还不完善,希望有一天自己也能为了这个社区贡献自己的绵薄之力。关于落地,《TensorFlow.NET 在工业部署中的应用》这篇文章说的也很好,能为我们解答很多落地痛点问题。

3.关于文档

之前说了算法开发懒得写文档,这个思想是不对的,或者说在我们公司是不对的。上周试着花了一整天的时间来写文档,按照论文的格式写了一下。感觉收获还挺大的,至少愿意看自己写的文档了。

4.工作亮点

(1)调研了.Net平台相关的算法库,了解了Accord.Net做机器学习,Tesorflow.Net做深度学习的。并且在核在线项目中应用该库进行建模预测。在算法落地方面为公司其它项目提供了参考
(2)探索了python做算法前期研究、出算法文档,C#做落地的做法。在核流水线上成功实践。
(3)探索了tdd模式在算法移植中的应用,创建关键点的测试用例,保证移植过程可控,错误排查效率高。在小波去噪中成功实践。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值