找回密码
 立即注册
查看: 1216|回复: 4

纯C语言实现深度学习,能识别图像,不依赖第三方库

[复制链接]

1

主题

0

回帖

20

积分

新手上路

积分
20
发表于 2023-5-19 21:44:11 | 显示全部楼层 |阅读模式
只是做了一些微小的工作
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
搜索github发现,使用C语言实现深度学习的项目确实不少,但是整体上质量都不太行。于是笔者决定本身写一个,要达到的方针是:

  • 纯C99,不用C++
  • 核心部门不依赖第三方库,甚至不需要stdio
  • 便利移植,不需要OS就可以跑
有兴趣的同学请直接clone
欢迎star/fork/comment三连
一、代码布局

在src/generic下面是这个深度学习库的核心部门,它没有include任安在这个目录之外的东西,包罗C语言的尺度库也没有。因此任何一个撑持C99的C编译器都可以进行编译。
src的其他目录是这个库的“移植方针”。在编译的时候要指定移植方针,移植方针目录里的文件会优先于generic目录里的同名文件,这样就能便利在分歧的方针下进行优化。常用的一些方针如下:

  • os,适用于有操作系统的环境。这个方针需要使用stdio和stdlib,其实只需要提供printf和malloc就行了
  • avx,适用于有Intel AVX指令集的环境。
  • gloss,适合于有libgloss的嵌入式开发环境,一会儿我们在RISC-V环境中会用到
  • emu,适合于AI加速器RTL仿真的环境,putc会使用向特定地址写入数据的方式实现,这样利于仿真环境抓取
二、MNIST 手写识别

在test/mnist目录下有手写识此外例子,输入“图片”以浮点数组的形式直接放在代码里:



离远了看就是“8”

直接敲make就可以得到最后一层的输出,以及推理的成果(第8个数最大,那就识别为8)
如果你安装了Python以及PyTorch,可以去py目录运行 python3 test.py,你可以使用PyTorch计算得到完全不异的成果,验证这个项目推理成果的正确性。
三、Resnet50 图像识别

Resnet50的权重太大了,没法包含在这个库里,所以请读者自行按照test/resnet50中的说明,安装Python以及TensorFlow之后,就能得到本项目所需要的权重。
然后还是在test/resnet50中敲make,可以得到推理成果



推理成果,和TensorFlow的成果完全一致

四、BareMetal 交叉编译

既然本项目是个纯C库,以BareMetal模式运行在其他CPU上当然不成问题。请首先按照项目README的要求安装好RISC-V环境的交叉编译器、模拟器以及libgloss。
还是回到test/mnist这个目录,只需要
make clean
make riscv就可以拿到和刚才一模一样的输出了
五、这个项目有没有详细的资料

没有,本来就是for fun。此外代码里也没什么注释。代码本身就是注释。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

0

主题

2

回帖

1

积分

新手上路

积分
1
发表于 2023-5-19 21:44:42 | 显示全部楼层
大佬请问最终C语言实现深度学习的结果,就是代码训练速度和准确率这些和用python调用库写的有区别吗?[好奇]
回复

使用道具 举报

1

主题

1

回帖

9

积分

新手上路

积分
9
发表于 2023-5-19 21:45:29 | 显示全部楼层
您好,请问如果不需要一些特殊的函数例如printf,那么对于裸机环境,Newlib+libgloss是不是就可以免移植直接编译运行呢
回复

使用道具 举报

0

主题

2

回帖

4

积分

新手上路

积分
4
发表于 2023-5-19 21:46:16 | 显示全部楼层
同问
回复

使用道具 举报

0

主题

5

回帖

5

积分

新手上路

积分
5
发表于 2023-5-19 21:46:31 | 显示全部楼层
真实大佬中佬[爱]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|T9AI - 深度人工智能平台 ( 沪ICP备2023010006号 )

GMT+8, 2024-12-12 05:18 , Processed in 0.055702 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表