代码地址如下:
http://www.demodashi.com/demo/11138.html

一、准备工作

  • ####需要准备什么环境
    需要安装有Visual Studio并且配置了OpenCV。能够使用OpenCV的core模块。
    使用者需要有基本的C++编程基础。
  • #### 本例子实现什么功能
    本例实现了简单的深度神经网络,基于OpenCV的矩阵类Mat。程序实现了BP算法,支持创建和训练多层神经网络,支持loss可视化。支持模型的保存和加载。

二、示例代码

新建和初始化一个神经网络的过程非常简单,像下面这样:

    //Set neuron number of every layervector<int> layer_neuron_num = { 784,100,10 };// Initialise Net and weightsNet net;net.initNet(layer_neuron_num);net.initWeights(0, 0., 0.01);net.initBias(Scalar(0.5));

训练神经网络也很容易,下面是一个例子。训练完之后可以保存模型

#include"../include/Net.h"
//<opencv2\opencv.hpp>using namespace std;
using namespace cv;
using namespace liu;int main(int argc, char *argv[])
{//Set neuron number of every layervector<int> layer_neuron_num = { 784,100,10 };// Initialise Net and weightsNet net;net.initNet(layer_neuron_num);net.initWeights(0, 0., 0.01);net.initBias(Scalar(0.5));//Get test samples and test samples Mat input, label, test_input, test_label;int sample_number = 800;get_input_label("data/input_label_1000.xml", input, label, sample_number);get_input_label("data/input_label_1000.xml", test_input, test_label, 200, 800);//Set loss threshold,learning rate and activation functionfloat loss_threshold = 0.5;net.learning_rate = 0.3;net.output_interval = 2;net.activation_function = "sigmoid";//Train,and draw the loss curve(cause the last parameter is ture) and test the trained netnet.train(input, label, loss_threshold, true);net.test(test_input, test_label);//Save the modelnet.save("models/model_sigmoid_800_200.xml");getchar();return 0;
}

加载训练过的模型然后直接使用就更加方便了。

#include"../include/Net.h"
//<opencv2\opencv.hpp>using namespace std;
using namespace cv;
using namespace liu;int main(int argc, char *argv[])
{//Get test samples and the label is 0--1Mat test_input, test_label;int sample_number = 200;int start_position = 800;get_input_label("data/input_label_1000.xml", test_input, test_label, sample_number, start_position);//Load the trained net and test.Net net;net.load("models/model_sigmoid_800_200.xml");net.test(test_input, test_label);getchar();return 0;
}

三、文件结构

  • 文件结构
    下载后文件如下:
  • 包含了例子所用的数据(data)
  • 示例程序(examples)
  • 头文件(include)
  • 示例程序训练的模型(models)
  • 实现源代码(src)

四、运行效果

这是以部分minist数据测试的效果图。同时还能实时输出loss值。


C++从零实现简单深度神经网络(基于OpenCV)

代码地址如下:
http://www.demodashi.com/demo/11138.html

注:本文著作权归作者,由demo大师发表,拒绝转载,转载需要作者授权

C++从零实现简单深度神经网络(基于OpenCV)相关推荐

  1. 【深度学习论文翻译】基于LSTM深度神经网络的时间序列预测(Time Series Prediction Using LSTM Deep Neural Networks)

    目录 一.前言 二.摘要 三.什么是LSTM神经元? 四.简单正弦波示例 五. 不那么简单的股票市场 六.多维LSTM预测 七.结论 一.前言 最近需要用到时间序列,在网上也找到了一篇相关的文章及源代 ...

  2. 斯坦福马腾宇:用显式正则器提升深度神经网络的泛化能力

    2019年12月30日,在"智源论坛·海外学者学术报告会"上,斯坦福大学计算机科学和统计学助理教授马腾宇博士做了<为深度模型设计显式正则器>的主题演讲.马腾宇,本科就读 ...

  3. 【深度学习】深度神经网络框架的探索(从Regression说起)

    [深度学习]深度神经网络框架的探索(从Regression说起) 1 从逻辑回归说起 2 深度学习框架 3 基于反向传播算法的自动求导 4 简单深度神经网络框架实现4.1 数据结构4.2 计算图组件4 ...

  4. 神经元谈到深度神经网络

    序列文章 上文[<一文速览机器学习的类别(Python代码)>](https://www.jianshu.com/p/fbe59dc46907) 提到逻辑回归并做了简单介绍.本文将从神经元 ...

  5. 从神经元谈到深度神经网络

    作者 | 泳鱼 来源 | 算法进阶 本文将从神经元到逻辑回归模型结构,并将其扩展到深度深度网络模型. 一.谈谈智慧 对于人类智慧奥秘的探索,不同时代.学科背景的人对于智慧的理解及其实现方法有着不同的思 ...

  6. 基于 opencv 的图像处理入门教程

    点击上方"算法猿的成长",关注公众号,选择加"星标"或"置顶" 总第 146 篇文章,本文大约 5000 字,阅读大约需要 20 分钟 前言 ...

  7. python深度神经网络量化_基于Python建立深度神经网络!你学会了嘛?

    原标题:基于Python建立深度神经网络!你学会了嘛? 图1 神经网络构造的例子(符号说明:上标[l]表示与第l层:上标(i)表示第i个例子:下标i表示矢量第i项) 单层神经网络 图2 单层神经网络示 ...

  8. 零基础入门深度学习(5) - 循环神经网络

    往期回顾 在前面的文章系列文章中,我们介绍了全连接神经网络和卷积神经网络,以及它们的训练和使用.他们都只能单独的取处理一个个的输入,前一个输入和后一个输入是完全没有关系的.但是,某些任务需要能够更好的 ...

  9. 普林斯顿大学英伟达Facebook提出基于深度神经网络的全动态推理,助力轻量级网络!...

    关注公众号,发现CV技术之美 ▊ 写在前面 深层神经网络是一种功能强大.应用广泛的模型,能够多级抽象提取任务相关信息.然而,这种成功通常是以计算成本.高内存带宽和长推理延迟为代价的,这使得它们无法部署 ...

最新文章

  1. (三) Angular2项目框架搭建心得
  2. 1-选择器 计算法
  3. VTK:几何对象之Arrow
  4. HDFS的API操作-获取文件列表信息
  5. python少儿编程课件ppt_Python课程第五期
  6. php pjax数据返回,如何将Pjax整合进网站,实现全站无刷新加载?
  7. Redis能干啥?细看11种Web应用场景
  8. Mapreduce 进阶
  9. 江苏专转本计算机各章知识点,江苏专转本计算机知识点.doc
  10. 63 岁工程师的退休生活:开发一款计算器应用,22 天获 56800 下载!
  11. RS信道编码(matlab)
  12. 基于单片机指纹考勤系统设计(论文毕设)全套资料
  13. 一文带你入门 HTTP 协议
  14. 学习英文-学以致用【场景:程序员英文-开发环境】
  15. 在canvas上实现3D效果
  16. windows下mysql免安装配置
  17. Android Studio中如何将ijkplayer 0.6.3导入自己的项目中并使用
  18. 低代码开发平台除了织信informat还有哪些?
  19. 集成简易图片在线编辑,实现简易图片滤镜裁剪添加对话框
  20. python 异步io框架_Python并发编程之学习异步IO框架:asyncio 中篇(十)

热门文章

  1. c++tcp接收文件缓存多大合适_要是有人问我 TCP, 我能怎么扯
  2. java 布局管理器_java布局管理器-borderlayout
  3. python顺序结构的关键字_Python1_Python的目录结构、执行顺序、__name__ == __main__
  4. 数据结构之二叉树的定义和性质
  5. ubuntu12.04 安装kinect V1驱动
  6. apt mysql 5.1_linux下apt安装mysql导致mysql.user table is damaged
  7. 《深入理解分布式事务》第六章 最终一致性分布式事务解决方案
  8. 【设计模式】第一章 面向对象六大原则
  9. 已创建仓库后 github提交流程
  10. 微信小程序|开发实战篇之三