# MicroANN **Repository Path**: junfenggeng/MicroANN ## Basic Information - **Project Name**: MicroANN - **Description**: **MicroANN - 超轻量级自学习神经网络库** 自主学习,无需PC端预训练,仅1个c文件,1个h文件。 - **Primary Language**: C - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-10 - **Last Updated**: 2025-04-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MicroANN - 超轻量级自学习神经网络库 ## 🌟 项目简介 MicroANN 是一个专为嵌入式设备和物联网终端设计的微型神经网络库,具有以下核心特点: • **超轻量**:纯C实现,核心代码<500行,RAM占用最低仅0.5KB • **零依赖**:不依赖任何第三方库,可直接集成到各类嵌入式系统 • **自学习**:通过用户定义的评分函数实现参数自主优化 • **双模式**:支持浮点运算和定点数(Q15)两种计算模式 ## 🚀 快速开始 ### 1. 集成到项目 ```c #include "micro_ann.h" // 定义网络结构 (3输入-无隐藏层-1输出) struct micro_ann_config cfg = { .input_size = 3, .hidden_size = 0, .output_size = 1 }; // 计算所需内存 float weights[MICRO_ANN_WEIGHT_COUNT(cfg)]; // 初始化实例 struct micro_ann ann; micro_ann_init(&ann, &cfg, weights, 0.1f); ``` ### 2. 运行推理+学习 ```c // 输入数据 float inputs[3] = {0.1f, 0.2f, 0.3f}; float outputs[1]; // 前向计算 micro_ann_run(&ann, inputs, outputs); // 用户定义评分函数(值越大表示结果越好) float score = 1.0f - fabs(outputs[0] - 0.5f); // 参数学习(正分增强当前行为,负分减弱) micro_ann_learn(&ann, inputs, outputs, score); ``` ## 📌 核心特性 | 特性 | 说明 | |---------------------|----------------------------------------------------------------------| | **多实例支持** | 可同时运行多个独立ANN实例 | | **内存可控** | 所有内存由用户预分配,无动态内存申请 | | **跨平台** | ANSI C代码,平台无关 | | **学习率衰减** | 自动随训练次数降低学习率,提高稳定性 | ## 📚 文档目录 ## 🛠️ 应用场景 • 🔧 工业设备参数自适应调节 • 🌡️ 环境传感器数据补偿 • 🚗 车载控制器实时优化 • 🏠 智能家居设备个性化学习 ## 📦 版本计划 • 规划中 • 支持ARM Cortex-M DSP指令加速 • 添加RTOS线程安全保护 ## 🤝 参与贡献 欢迎提交Issue和PR!请遵循以下流程: 1. Fork本项目 2. 创建特性分支 (`git checkout -b feature/your-feature`) 3. 提交修改 (`git commit -am 'Add some feature'`) 4. 推送分支 (`git push origin feature/your-feature`) 5. 新建Pull Request ## 📜 开源协议 Apache 2.0