本帖最后由 PYPL80022602 于 2019-4-12 18:26 编辑
OSlw是一款由C语言编写的小型开源操作系统,内置了一系列机器学习的算法库,可以大幅度提高算法由PC到单片机实现的效率。
算法代码支持3种数据格式:IQmath,单精度浮点,双精度浮点
可运行于:STM32F1(推荐IQmath),STM32F4(推荐单精度),STM32F7(推荐单精度)
MSP430(推荐IQmath),MSP432(推荐单精度)
TI的C2000,C5000,dsPIC等
用户可以自定义多个堆(heap)用于动态内存分配,堆地址,大小完全有用户决定,可任意定义在内部RAM或者外部RAM中,每一个堆由独立结构体管理,查询信息,用户可以自由查询剩余大小,以便进行优化调整。
0.96版本新增:
1)修改了部分内置卷积代码 提高了20%的效率(不使用CBLAS)
2)支持CBLAS库,可以在支持CBLAS的平台上提高性能(主要针对树莓派等)
3)增加了CNN的im2col模式,仅限于前向传递,可以使用im2col+矩阵运算库大幅度提高CNN前向传递性能,im2col模式下支持局部展开,可以在嵌入式设备上减小内存消耗
0.95版本新增:
1)修改矩阵部分部分代码 在树莓派zerow上提高一倍效率
2)增加split层,用以分割数据(可反向传递,没有append函数)(可用于残差网络输入)
3)增加mix层,用以混合(相加)数据(可反向传递,没有append函数)(可用于残差网络输出)
4)增加pad层,已经实现constant模式(可反向传递,有append函数)
5)增加extend层,已经实现nearest模式(可反向传递,有append函数)
6)增加梯度(修改量)限幅功能
7)修改sigmoid与tanh函数实现方法 采用三次样条插值替代 提高速度
8)增加快速exp函数实现方法(包含256点低精度与1024点中等精度)
0.94版本新增:
1)RNN(GRU-RNN)的CELL被修改,灵活性大提高
2)支持LayerNorm层(支持训练),RNN(GRU-RNN)支持含LN层的结果
3)新增Shift层(支持训练),可以来代替训练好的BatchNorm
0.93版本中支持的算法
神经网络算法:
1)支持动态搭建神经网络(在代码中搭建,不用提前在配置软件中配置,经过适当修改甚至可以动态修改神经网络框架)
2)支持普通神经网络(全连接层)
3)支持激活函数包括:sigmoid,tanh,relu,leak-relu,relu6,selu,swish,softmax(用于分类)……
4)支持普通损失函数,支持交叉熵损失函数
5)支持CNN(卷积层,最大值池化与平均值池化)
6)支持RNN,及其LSTM-RNN变种(GRU-RNN)
7)所有层都支持前向运算与训练,支持用户自任意内存空间导入训练好的权重(RAM,外扩RAM,NAND-FLASH,QSPI-FLASH),flash中的参数不能修改
8)支持优化算法包括普通梯度下降法,RMS法,ADAM法等
9)所有层支持用户自定义随机初始化方法,支持均匀分布,正态分布等初始化方法
增强学习算法:
1)支持Qlearning法(可以动态训练)
2)支持DQN算法(可以动态训练)
3)支持DDPG算法(可以动态训练)
随机数算法
1)支持线性同余法
2)支持混沌法(logistics映射,kent映射等)
3)支持MT(梅森旋转)法
。。。。。。
教程中有手把手教你自tensorflow(为主),pytorch中导出权重到单片机上
视频教程同步更新(B站,请自动加上www.):
深度学习篇:
【1】(序章)OSLW: bilibili.com/video/av40797249/
【2】神经网络前向传递: bilibili.com/video/av40797927/
【3】神经网络反向传递与Tensorflow: bilibili.com/video/av40798676/
【4】神经网络初始化(STM32F407): bilibili.com/video/av40901436/
【5】分类问题-异或门(STM32F407): bilibili.com/video/av41802723/
【6】分类-优化器(STM32F407): bilibili.com/video/av41804441/
【7】回归+IQmath说明(dsp28069): bilibili.com/video/av41844334/
【8】过拟合与L2正则化(DSP28069): bilibili.com/video/av41878712/
【9】神经网络数据结构: bilibili.com/video/av41881192/
【10】CNN开篇: bilibili.com/video/av41996915/
【11】CNN简单分类(STM32F730R8+W25Q16): bilibili.com/video/av42070486/
【12】手把手教你自TensorFlow导出CNN权重:bilibili.com/video/av42103508/
【13】CNN实战手写识别(STM32F730R8+W25Q16): bilibili.com/video/av42116522/
【14】RNN-8bit加法(STM32F103RE):bilibili.com/video/av42289494/
【15】GRU-RNN 8bit加法(STM32F103RE): bilibili.com/video/av42291537/
【16】讲解GRU-RNN MNIST手写识别(STM32F103RE):bilibili.com/video/av42289494/
【17】玩玩MNIST手写识别-GRURNN(STM32F103RE): bilibili.com/video/av42291537/
【18】玩玩MNIST手写识别-CNN(STM32F767ZI) :bilibili.com/video/av44420362
【20】手把手教你从TensorFlow中导出简单模型(STM32F103RE) bilibili.com/video/av45570165
【21】OSlw_v0.94 VS NumPy(矩阵对应相乘):bilibili.com/video/av45727812
【22】OSlw_v0.94 VS NumPy(矩阵乘):bilibili.com/video/av45991140
【23】手把手教你从TensorFlow中导出简单模型(定点数):bilibili.com/video/av46307491/
【24】OSlw_v0.94 VS SciPy(多通道卷积):bilibili.com/video/av46681942/
操作系统篇:
【1】OS内核跳转方法: bilibili.com/video/av43813439/
【2】手把手教你写内核任务-库函数法 :bilibili.com/video/av43942993/
【3】手把手教你写内核任务-switch法:bilibili.com/video/av43965092/
【4】OS中重要的宏定义:bilibili.com/video/av44023346/
【5】OS的内核结构体与函数:bilibili.com/video/av44023382/
【6】OS新建内核任务与延时函数:bilibili.com/video/av44109401/
【7】OS中代码运行测量方法:bilibili.com/video/av44109572/
【8】OS中的瞌睡,闹铃与拍卖功能:bilibili.com/video/av44264859/
【9】OSLW内存分配1(malloc等函数功能分析) bilibili.com/video/av44641143
【10】OSLW内存分配2(函数原理与内存碎片) bilibili.com/video/av44741748
【11】OSLW内存分配3(简单内存分配与派生) bilibili.com/video/av44911797/
【12】OSLW内存分配4(映射与链表) bilibili.com/video/av45405419/
【13】OSLW内存分配5(实验) bilibili.com/video/av47197579/
【14】OSLW软件定时器与标志组 bilibili.com/video/av47581468/
简单实例:
联系方式,可在B站内私信或者邮箱
Email:shuep_418_slw@outlook.com
源代码
github.com/Shuep418Slw/OSlw_Code
demo代码
github.com/Shuep418Slw/OSlw_Example
|
深度学习之风格转换已经在B站上线,有兴趣的小伙伴可以看一下
0.96版本已经更新,增加了CBLAS模式,大幅度提升在树莓派等平台的速度,有兴趣可去github关注一下
0.95版本已经更新,增加了比较多的新特性,有兴趣可去github关注一下
OSLW软件定时器与标志组视频已经上线,接下来应该是消息队列
OSLW内存分配5(实验)已经上线,接下来应该更新的是消息队列或者标志组,之前OSLW pk scipy多通道卷积对比结果也已经出炉,接下来可能对比应该opencv中的二维卷积
手把手教你从TensorFlow中导出简单模型(定点数)已经上线,有兴趣的小伙伴可以看一下
OSlw_v0.94 VS NumPy(矩阵乘) 视频已经发布 这次比较的是矩阵乘,看来numpy的执行效率还是相当可以的
厉害了我的哥