首页 > 编程语言 >基于C++的 BP/CNN神经网络算法(不调包)

基于C++的 BP/CNN神经网络算法(不调包)

时间:2024-10-20 15:22:28浏览次数:10  
标签:-- 32 代码 C++ blogcolumn 神经网络 BP 调包 12812167

目前玩深度学习的小伙伴,上来就是使用现有的深度学习框架(TensorFlow,keras,pytorch,caffe),增加网络层,就像搭积木似的,看似方便,实则有时不利于个人能力发展,要知道现在公司需要的算法工程师,不仅仅只是会搭积木(这种工作,入门几个月的人就可以干了),而是要深入底层,能优化代码,能自己搭。

本文章适合以下几类人:

1)初学者,了解神经网络的推理和参数更新过程

2)会使用深度学习框架但不知道代码的实现

3)想提升自己的代码能力

第一步:准备数据

还是minst数据,号称深度学习界的“Hello world”,数据如下:

b54575056a186d10385dc103e81dec44.png

e4e436961817c63cee5ec899da9fbdce.png

第二步:基础运算库搭建

深度学习推理过程和反向更新参数过程,本质就是一些矩阵运算,当我们把前期的基础运算库搭建好之后,再搭建深度学习的网络会起到事半功倍,而且这份代码是特别值得学习,机器学习很多运算求解其实也是矩阵运算,以下是部分代码截图

47d2a929f6c155ff2b8ed14d565ec361.png

第三步:搭建网络结构

常见的神经网络有两种,一种是bp神经网络,一种是cnn神经网络

1.bp神经网络

//输入32*32 -- 全连接 15*1024 -- 全连接 15*10 -- 输出

以下为部分代码截图:

e4573e19b648d747117d8f7a1ebb51ff.png

2.cnn神经网络

//输入32*32 -- 卷积C1 28*28 -- 池化S2 14*14 -- 卷积C3 10*10 -- 池化S4 5*5 -- 卷积C5 1*1 -- 全连接

以下为部分代码截图:

9976c240a0872e50945a5501b2e84933.png

第四步:项目源码下载:

整套算法系列:https://blog.csdn.net/u013289254/category_12812167.html?fromshare=blogcolumn&sharetype=blogcolumn&sharerId=12812167&sharerefer=PC&sharesource=u013289254&sharefrom=from_linkicon-default.png?t=O83Ahttps://blog.csdn.net/u013289254/category_12812167.html?fromshare=blogcolumn&sharetype=blogcolumn&sharerId=12812167&sharerefer=PC&sharesource=u013289254&sharefrom=from_link项目源码下载地址:关注WX【AI街潜水的八角】,回复【CNN神经网络算法】即可下载

整套项目源码内容包含

程序里面包括BP和CNN神经网络,接近上千行代码

第五步:运行过程

IDE软件用vs2010以上版本就行,在验证数据上,BP准确率能达91.6%,CNN准确度能达96.4%。

有问题可以私信或者留言,有问必答

标签:--,32,代码,C++,blogcolumn,神经网络,BP,调包,12812167
From: https://blog.csdn.net/u013289254/article/details/143092367

相关文章

  • qt图像算法—图像的缩放之c++实现(不调包)
     1.基本原理  图像的缩放一般使用插值算法,而本章将介绍两种常用插值算法:最临近插值法和双线性插值法  1.最临近插值法  将浮点数的位置坐标,进行四舍五入找到原图像的整型坐标即可,具体操作可见下面的公式,其中原图像坐标为(x,y),输出图像坐标为(i,j),比例系数为fx和fy。......
  • qt图像算法—图像的种子算法之c++实现(不调包)
     1.基本原理  相互连通且颜色相近的像素集合可以被看成图像的区域,而区域填充就是将每一块图像区域用指定颜色填充,填充的算法有很多种,但今天的猪脚是种子算法。在使用种子算法的时候,我们要注意两点,第一点:连通像素的搜索分为四方向和八方向,根据应用自己选择就行;第二点:边界......
  • 使用 C++ 实现验证码识别与自动化登录
    安装所需依赖确保你已经安装以下库:libcurl:用于发送HTTP请求。OpenCV:用于图像处理。Tesseract:用于OCR识别。在Ubuntu系统中,你可以使用以下命令安装这些依赖:bashsudoapt-getinstalllibcurl4-openssl-devsudoapt-getinstalllibopencv-devsudoapt-getinstall......
  • 2.1.2 话题通信基本操作A(C++)
    需求:编写发布订阅实现,要求发布方以10HZ(每秒10次)的频率发布文本消息,订阅方订阅消息并将消息内容打印输出。分析:在模型实现中,ROSmaster不需要实现,而连接的建立也已经被封装了,需要关注的关键点有三个:发布方接收方数据(此处为普通文本)流程:编写发布方实现;编写订阅......
  • C++编程-贪心算法2
    目录先言例题三:删数问题(NOI1994)题目描述算法分析标准程序-字符串String例题四:拦截导弹问题题目描述算法分析主要框架(标准程序)例题五:活动选择题目描述算法分析标准程序先言今天讲贪心算法的第3~5例题例题三:删数问题(NOI1994)题目描述【题目描述】输......
  • c++跑酷(技能升级版,升级火,镖,水)
    #include<bits/stdc++.h> #include<windows.h>#include<stdio.h>#include<conio.h>#include<time.h>#defineNorif(B[b].x<5)B[b].x=5;#defineOut1Bx1-Bvx1<=6||Bx1-Bvx1>=28||By1-Bvy1<=7||By1-Bvy1>=27#defineOut......
  • 用C++实现自己的智能指针:深入探讨内存管理与RAII模式
    解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界C++中的内存管理一直以来是程序员的一个难点,尤其是在处理动态内存分配时。智能指针(如std::unique_ptr和std::shared_ptr)通过RAII(资源获取即初始化)的设计理念,极大地简化了动态内存的管理,减少了内存泄漏的风险。然......
  • 用C++编写一个简单的游戏引擎:从游戏循环到物理与渲染的全面解析
    解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界构建一个基础的2D游戏引擎是一项富有挑战性但极具学习价值的任务。本文将通过从零开始的方式,逐步讲解如何使用C++开发一个简单的游戏引擎。内容涵盖了游戏引擎的核心架构设计,包括游戏循环、物理引擎和图形渲染等......
  • C++初阶
     目录一.命名空间1.命名空间定义2.命名空间使用二.C++输入&输出三.缺省参数四.函数重载五.引用1.常引用2.传值、传引用效率比较3.引用和指针的区别4.引用和指针的不同点:小知识点:六.内联函数七.auto关键字(C++11)1.auto的使用细则八.基于范围的for循环(C++1......
  • C++ -string -常见用法4
    博客主页:【夜泉_ly】本文专栏:【C++】欢迎点赞......