前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用C++仿写了一个玩具版深度学习框架

用C++仿写了一个玩具版深度学习框架

作者头像
阿波张
发布2023-09-01 11:22:06
1840
发布2023-09-01 11:22:06
举报

作为对《深度学习入门2--自制框架》的实践,用C++仿写了一个玩具版深度学习框架:TinyLearning。原书用Python语言及NumPy库构建了一个极简的深度学习框架,为什么还要用C++来重复造一个轮子呢?记得高中数学老师对我影响最深的一句话是“一看就会,一做就错”,不管是数学还是编程,当接触到新的知识时,只看不练实际上是很难真正学会的。所以在看完《自制框架》后就决定实作一番,至于语言选择,肯定不能选择Python,否则就相当于照书抄一篇,毫无意义;然后我想到了Go语言,但Go语言缺乏运算符和函数重载,不管是写起来还是后面使用这个框架都积极不方便,在我所熟悉的编程语言中就剩下C/C++了;再者,得益于C++强大的性能,它任是开发底层基础软件不二的选择,比如当今最强大最流行的两大深度学习框架Tensor Flow和PyTorch都毫无例外的选择了C++作为底层开发语言。

虽然TinyLearning总体来说是按照《自制框架》中的Python实现完成的,但实际上还是有个最重要的差别:书中使用了NumPy这一功能强大且高效的张量库,而TinyLearning并未使用第三方库,而是从头实现了一个简单的张量库,当然功能和性能无法望NumPy的项背,高性能并不是当下的目标,目前需要保持代码简单易懂。‍‍‍‍‍‍‍‍

TinyLearning虽然代码量很小,但实现了现代深度学习框架必备的根据动态计算图自动微分的功能。当然还有很多功能未实现,比如静态计算图、GPU支持和分布式训练等新一代框架所必备的核心功能。‍‍‍‍‍

下图是用TinyLearning可视化的计算图。‍‍

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-06-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 源码游记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档