[C/C++]为什么手搓一个简版CNN并不难

一篇关于在C/C++中实现简单CNN的文章,旨在打破学生认为实现CNN困难的观念。提供了训练好的模型,简化了实现过程,仅包含conv、relu、maxpool和fc层。通过GitHub项目提供详细资源,鼓励学生实践更复杂的CNN。
摘要由CSDN通过智能技术生成

我这个学期给本科生二年级教授“C/C++程序设计”,期末项目是实现一个简单的CNN inference,不能使用第三方库,只能手写代码实现。很多同学的第一反应是这个太难了,其实并非如此,本文详细介绍为何不难。

我前几日写过一篇文章介绍这样设计项目的初衷《[C/C++]期末作业实现一个CNN?》。为了让同学们更好起步,在我的研究生冯远滔同学帮助下,提供了一个训练好的模型,这个简单的CNN模型结构如下图。

f8d5a799b58803bf01faf3cfe5a3c9aa.png

这个模型可以区分图像中是否有人脸,图像尺寸128x128,输出是含两个元素的向量,两个数值分别表示是背景和人脸可能性。这个模型的所有参数都以C语言静态数组方式导出到CPP文件中。模型只包含conv、relu,maxpool和fc四种层。conv只有三层,且仅有3x3一种卷积核。这些都大大简化了实现难度。当然我鼓励学生实现更通用的CNN inference。这个简单模型的所有资料可以在 https://github.com/ShiqiYu/SimpleCNNbyCPP 下载 (或左下角“原文链接”)。

3e421fa153452ae86b3c4a09dccc2357.png

这个GitHub项目中,以代

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值