私人影视免费在线看最新电视剧 https://www.siren.run 作者|苏宓 出品|CSDN(ID:CSDNnews) 你是从什么时候开始编程的? 据CSDN调研数万名开发者的数据显示,近六成的开发者表示自己写下第一行代码的年龄是在16-20岁间。其次有31.68%的受访者是在21-25间首次接触了编程。 不得不承认,编程的主力军越来越趋于年轻化。不过也有不少网友表示,“这纯属是别人家的孩子,我的高中可能还是在玩泥巴”。 又属有些拉“嫉妒”系列,近日国外再次有一位别人家的孩子荣登热搜。起因于其在Reddit发布了一篇主题为《一个16岁的高中生从零开始构建C++机器学习库》的帖子,引来数百个用户的点赞与评论。 灵感萌生 据悉,这位网名为@u/novak-99的高中生开发了一个13000+行代码的C++机器学习库——MLPP(GitHub地址:https://github.com/novak-99/MLPP)。值得注意的是,该库覆盖了统计学、线性代数、数值分析、机器学习、深度学习等多主题技术。 之所以开发这个库,作者解释主要有两层因素。 一是不少工程师容易忽视ML算法背后的具体实现与细节。 “时下其实想要实现ML算法并不难,但是很多工程师经常忽略其背后的实现原理和运用的技术细节”,@u/novak-99无奈地说道。 所谓学习编程思维往往比实现某一功能的开发来得更为实在,@u/novak-99表示,如果不了解算法背后的数学技术细节,就无法在实现某些特定用例时反过来优化ML算法。 确实如此,“重复造技术轮子,缺乏创新”是当前技术圈中存在的痛点之一,而在学习编程的同时,了解工具背后的实现原理,也有助于进一步提升编程思维与创新。 当提及第二个原因时,@u/novak-99表示,“C++在ML领域缺乏支持,使用C++开发的机器学习前端库更是少之又少。” 在@u/novak-99看来,在TensorFlow、PyTorch、Numpy等主流的机器学习框架中,不乏有很多库采用了C/C++或某种C/C++衍生工具进行优化和提高运行速度。不过,@u/novak-99特别指出,这里的机器学习领域并非是后端开发,而是前端。 @u/novak-99表示,其上手的第一门编程语言就是C++,这门语言高效且有利于快速执行。因此他在15岁开始学习了解各种机器学习算法实现时,发现大多数都是用Python、MatLab、R、Octave来实现的。 ”尤其是与Python的数量相比,C++机器学习中的框架数量相形见绌。此外,即使在PyTorch或TensorFlow等流行的框架中,C++的实现也没有Python的那么完整:缺乏文档参考、并非所有的主要功能都能应用上、没有多少人愿意贡献等等。 此外,C++不支持Python的ML套件的各种关键库;Pandas缺乏对C++的支持,Matplotlib也是如此。这增加了ML算法的实现时间,因为数据可视化和数据分析的元素更难获得。“ 由此,这也让他萌生了使用C++开发一个机器学习库的想法: C++在ML领域缺乏使用的主要原因是由于缺乏用户支持和C++的复杂语法。Python有数千个用于数学、线性代数、机器学习和深度学习的库和包,而C++没有这种用户支持。现在,你可以期待一下使用C++开发的最强大的机器学习库。 不过,针对这一点,有不少人反驳道: 实际上,大多数(/所有相关的)ML框架都是用C++实现的。 Pytorch、Tensorflow等只是提供广泛的Python绑定,以便开发者能够更快地进行实验和开发。所有繁重的工作量都在极其优化的C++/C/CUDA代码中处理。 在大多数情况下,Python性能和开销是可以忽略的。例如,在1小时的过程中节省10秒并不是什么大问题,尤其是当您仍处于实验阶段时。 如果你想不惜一切代价避免使用Python,你可以使用Pytorch的C++API。 不过,无论@u/novak-99对C++在ML领域的应用情况判断是否有误,其初心仅是想要进一步让C++在ML领域得以应用,同时也想呼吁更多的开发者多关注算法背后的实现。 具体实现 @u/novak-99表示,其计划开源所有的实现文档,并详细地解释库中每个机器学习算法背后的所有数学实现,借此,希望能够对其他工程师们有所帮助。 以下是统计部分的摘录: 在具体的项目中,@u/novak-99所开发的ML++覆盖回归、Prebuilt神经网络、自然语言处理、计算机视觉等19大技术主题,53+技术细节,以此想要将其成为普通开发者和机器学习工程师之间的桥梁: 与此同时,ML++也在紧随技术实时更新,除了以上,ML++还聚焦: 卷积神经网络 支持向量机的内核 支持向量回归 写在最后 别人的16岁,或许对于技术的趋势判断有误,或许开发的算法暂时并不能在实践中应用,或许还存在许多的不足,但是作为一个高中生,他的编程思想、实践操作仍值得我们为其喝彩与学习! 参考资料: https://www.reddit.com/r/MachineLearning/comments/srbvnc/p_c_machine_learning_library_built_from_scratch/ ![]() |