单片机(Cortex-M内核,无操作系统)可以跑深度学习吗?
——Read Air 2019.8.20
Xu_CNN框架
待处理:
- 1.需要设计一个可读写的消息栈 ()
- 2.函数的类型参数使用结构体传入 (已实现)
- 3.动态开辟内存 (部分实现)
- 4.加法函数使用一维方式遍历 ()
- 5.错误检查函数可以设置统一关闭以提高运算速度()
- 6.错误检查时先将指针内数据取出 ()
- 7.卷积时对于乘法溢出做判断 ()
- 8.对malloc申请的矩阵做特殊标记以便精准释放()
- 9.对所有矩阵处理函数添加空指针检查 ()
1函数表
1.1训练部分
1.1.1 矩阵乘法函数 _ErrLog MatrixMulti(_Mat* MatA,_Mat* MatB,_Mat* MatR); //矩阵乘法 MatR = MatA * MatB;
解释:对MatR的尺寸也需要检验是因为MatR必须事先创建。
1.1.2 矩阵加法函数
1.1.3 单元素Sigmoid函数
1.1.4 矩阵Sigmoid函数
1.1.5 交叉熵计算函数
1.1.6 矩阵梯度计算函数
1.1.7 矩阵生成函数
1.1.8 全0赋值函数
1.1.9 全1赋值函数
1.1.10 随机赋值函数
1.1.11 矩阵ReLU函数
1.1.12
1.1.13
1.2推理部分
2 宏参数
Data_8b |
1 |
8位类型数据 |
Data_16b |
2 |
16位类型数据 |
Data_32b |
4 |
32位类型数据 |
Data_64b |
8 |
64位类型数据 |
Err_OK |
0 |
错误号:无错误 |
Err_ZeroSize |
1 |
错误号:零维数据 |
Err_SizeNotMatch |
2 |
错误号:矩阵维度不匹配 |
Err_SizeTooBig |
3 |
错误号:矩阵尺寸超大 |
Err_DivByZero |
4 |
错误号:除零错误 |
Err_MallocFail |
5 |
错误号:内存开辟失败 |
Err_TypeConfliction |
6 |
错误号:矩阵类型冲突 |
Err_UnexpectType |
7 |
错误号:未知数据类型 |
Err_NullAddress |
8 |
错误号:空指针 |
|
9 |
|
2019.8.26 |
1.定义了矩阵结构体 2.定义了错误号结构体 |
2019.8.27 |
1.修改了矩阵结构体,删除有无符号特性,统一为有符号数 2.完成了所有类型矩阵乘法函数 3.完成了所有类型矩阵加法函数 4.完善了错误检测机制 |
2019.8.29 |
1.完成0矩阵生成函数 2.完成1矩阵生成函数 3.完成矩阵ReLU函数 4.完成矩阵Sigmoid函数 5.完成交叉熵计算函数 6.将矩阵加法函数修改为case识别数据类型 |
2019.8.30 |
1.修复了部分函数中的BUG 2.完成了卷积函数 3.优化了全0、全1函数,改为批量赋值 4.完成了随机赋值函数 5.完成了矩阵内存释放函数 6.将之前写的矩阵处理函数归到Xu_CNN_base中,作为基础函数库 |
2019.8.31 |
1.完成了矩阵复制函数 |
|
|
基础函数已全部实现,目前发现malloc()在开辟较大内存时(208Bytes以上)申请失败,工程无法继续推进,遂停摆(2019.8.31)
希望可以走下去