13000行代码19大技术,这位16岁高中生用C++重头到尾构建了一个机器学习库!算法编程python

据CSDN调研数万名开发者的数据显示,近六成的开发者表示自己写下第一行代码的年龄是在16-20岁间。其次有31.68%的受访者是在21-25间首次接触了编程。

不得不承认,编程的主力军越来越趋于年轻化。不过也有不少网友表示,“这纯属是别人家的孩子,我的高中可能还是在玩泥巴”。

灵感萌生

之所以开发这个库,作者解释主要有两层因素。

一是不少工程师容易忽视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++开发一个机器学习库的想法:

C++在ML领域缺乏使用的主要原因是由于缺乏用户支持和C++的复杂语法。Python有数千个用于数学、线性代数、机器学习和深度学习的库和包,而C++没有这种用户支持。现在,你可以期待一下使用C++开发的最强大的机器学习库。

不过,针对这一点,有不少人反驳道:

Pytorch、Tensorflow等只是提供广泛的Python绑定,以便开发者能够更快地进行实验和开发。所有繁重的工作量都在极其优化的C++/C/CUDA代码中处理。

在大多数情况下,Python性能和开销是可以忽略的。例如,在1小时的过程中节省10秒并不是什么大问题,尤其是当您仍处于实验阶段时。

如果你想不惜一切代价避免使用Python,你可以使用Pytorch的C++API。

具体实现

@u/novak-99表示,其计划开源所有的实现文档,并详细地解释库中每个机器学习算法背后的所有数学实现,借此,希望能够对其他工程师们有所帮助。

以下是统计部分的摘录:

在具体的项目中,@u/novak-99所开发的ML++覆盖回归、Prebuilt神经网络、自然语言处理、计算机视觉等19大技术主题,53+技术细节,以此想要将其成为普通开发者和机器学习工程师之间的桥梁:

与此同时,ML++也在紧随技术实时更新,除了以上,ML++还聚焦:

写在最后

别人的16岁,或许对于技术的趋势判断有误,或许开发的算法暂时并不能在实践中应用,或许还存在许多的不足,但是作为一个高中生,他的编程思想、实践操作仍值得我们为其喝彩与学习!

THE END
1.C++基础代码—20余种数据结构和算法的实现基本上可以分为两大类,一种是关于数据结构和算法的(例如:RBtree,stack),另一种是关于C++语言本身层面的(例如:reference_count,Uncopyable)。这些类,可以在如今C++标准库或者其它C++库(如:boost)中找到类似的实现,实现它们的目的不是想自己造轮子,而是通过实现,来深入的理解到一些更本质的东西。很多时候,人们往往“http://help.louzhutie.cn/?developer/article/2477584
2.C++中各类常用算法的总结以及使用c++算法C++的std::for_each算法是标准库中的一个迭代器算法,它对容器或范围内的每个元素执行指定的操作。这个算法特别适用于你想要对容器内的每个元素应用同一个操作,但操作本身不需要积累结果(例如累加或查找最大值)的情形。std::for_each返回作用于每个元素的函数对象的副本。 https://blog.csdn.net/weixin_73497355/article/details/140331920
3.C++数据结构与算法的基础知识和经典算法汇总C语言终是到了标志着大二结束的期末考试了,对于《算法设计与分析》这门课,我需要总结一下学过的所有算法的思想以及老师补充的关于两个复杂度和递归的概念思想,以及更深层次的理解,比如用画图的方式表达出来,我觉得可以用博客记录总结一下,分享给大家,希望能有所帮助https://www.jb51.net/article/249531.htm
4.c++编程机器学习算法c++教程编程jkfox的技术博客c++编程机器学习算法 c++教程编程 1 C++初识 1.1 第一个C++程序 编写一个C++程序总共分为4个步骤 创建项目 创建文件 编写代码 运行程序 1.1.1 创建项目 Visual Studio是我们用来编写C++程序的主要工具,我们将它打开,创建项目,创建空项目 1.1.2 创建文件https://blog.51cto.com/u_13479/6432108
5.没学过C语言可以学C语言数据结构与算法吗?首先有个东西你需要了解到,程序 = 算法 + 数据结构,无论我们是学Java、Python、PHP还是C语言,对数据结构都要有一定的了解,如今很多学编程的人,只注重语法上的使用,当然或多或少都有对数据结构有学习过的,而那些根本没学过数据结构的人呢?就只能强行去理解使用。其实数据结构是一门具有艺术性https://zhidao.baidu.com/question/66147385.html
6.C++后端开发学习路线(超级详细)支持后台开发的编程语言有很多,比如 Java、C/C++、GOlang、Python、PHP 等。每个公司都有自己主打的后台开发语言,比如腾讯和百度使用较多的是 C++,阿里和美团使用较多的是 Java。本节给大家介绍的 C/C++ 后台开发学习路线,只是众多后台开发技术体系中的一个。 https://www.bilibili.com/read/cv37615412/
7.编程竞赛宝典C++语言和算法入门希望本书的出版,能够给学有余力的中学生、计算机专业的大学生、程序算法爱好者以及IT行业从业者提供学习计算机科学的帮助。 张新华 2021年5月 第01章 C++语言入门 计算机编程语言能够实现人与计算机之间的沟通与交流,使计算机能够根据人编写的代码一步一步地工作,完成某些特定的任务。C++语言是使用最广泛的编程语言之一https://www.epubit.com/bookDetails?id=UB77a9ce8133887
8.支持C++,Java,Python,Go,JavaScript等多语言版本,从此算法学习《代码随想录》LeetCode 刷题攻略:200道经典题目刷题顺序,共60w字的详细图解,视频难点剖析,50余张思维导图,支持C++,Java,Python,Go,JavaScript等多语言版本,从此算法学习不再迷茫! 来看看,你会发现相见恨晚!https://gitee.com/yuandreams/leetcode-master
9.招聘航天科技集团一院期待你的加入澎湃号·媒体澎湃新闻(二)智能算法设计 岗位职责: 1. 负责博弈对抗、集群协同、深度强化学习、多智能体强化学习等技术方向的应用研究和开发工作; 2. 负责对业界经典智能算法进行本地化改造,实现在航天场景中转化应用; 3. 负责航天飞行器智能算法模型建模、训练、测试与集成。 https://www.thepaper.cn/newsDetail_forward_15833677
10.c语言算法培训班C++程序算法课程C++程序算法课程 中班详询 课程优势:以学生为主体、采用探究式的学习方式、个性化的学习目标和结果标准设置,赋予学生学习的自主性,辅以的课程设计和专业的授课过程 上课方式:面授 上课时段:全日制,白天班,晚班,周末班 ¥ 询价 预约试听 学习能力 设计 编程 https://www.qinxue365.com/course/648986.html
11.C++经典算法集锦一咋一看,我曹感觉复杂,没有关系我们先把第一个操作完成,后面就是递归调用这个操作,你懂的。好吧,接下来让我们徒手写快排吧,如果你能够随时随地写一个快排,那么你对算法应该也已经从入门到精通了。 voidquick_sort(inta[],intleft,intright){if(left>=right){return;}inti=left;intj=right;intkey=a[i];whilehttps://www.jianshu.com/p/35d34fa7eb43
12.深度学习基于web端和C++的两种深度学习模型部署方式深度学习 Author:louwill Machine Learning Lab 本文对深度学习两种模型部署方式进行总结和梳理。一种是基于web服务端的模型部署,一种是基于C++软件集成的方式进行部署。 基于web服务端的模型部署,主要是通过RESTAPI的形式来提供接口方便调用。而基于C++的深度学习模型部署,主要是通过深度学习框架的C++前端版本,将模型集成https://cloud.tencent.com/developer/article/1684510
13.Opencv(C++)学习系列Laplacian拉普拉斯边缘检测算法简介:Opencv(C++)学习系列---Laplacian拉普拉斯边缘检测算法 【1】算法简介 Laplacian(拉普拉斯)算子是一种二阶导数算子,其具有旋转不变性,可以满足不同方向的图像边缘锐化(边缘检测)的要求。通常情况下,其算子的系数之和需要为零。 Laplacian算子具有各方向同性的特点,能够对任意方向的边缘进行提取,具有无方向性的优点https://developer.aliyun.com/article/1461988
14.开立生物医疗科技(武汉)有限公司2024届春季校园招聘3、熟练掌握至少一种深度学习框架,熟练掌握python,c++。有高性能计算经验优先; 4、有医学图像处理背景优先,有超声/内窥镜图像处理背景优先。 工作职责: 1、医疗设备相关的人工智能算法研究; 2、根据产品形态设计开发智能功能、匹配软硬件环境优化部署模型; https://cqu.cqbys.com/campus/view/id/689831