羽隔已就之图像处理之BP神经网络入门

小y最近非常忙,这一年来,活很多,一直在加班、出差,也没好好休息过。最近在武汉出差一个多月了,项目逐渐完结,有点闲时间了,回首望,这一年设定的很多目标都没完成。
还记得,我想写一篇用matlab识别车牌的程序讲解,但是一直没做。今天想着,怎么得都要啃一下这个硬骨头。因为我要是一直不写,一直不敢面对这个问题,也就会一直不学习,那怎么才能进步呢?正如怪鸽说,我们遇到什么困难也不要怕,微笑的面对他,消除恐惧的最好办法就是面对恐惧。
图像识别我想用的技术含有:BP神经网络技术、图像提取特征值、图像分割技术但是这些技术还没到家,今天在酒店研究BP神经网络的用法。
我对BP神经网络的理解如下:
用一组已知的数据走向去推断另外一组数据的走向。
我的想法就是图像都有特征向量,比如数字1,会有数字1的特征向量,这个特征向量经过一系列数学运算一定可以成为一个标准的参照,车牌的数字1的特征向量一定会相符模板的。
接下来我讲讲我是如何学习神经网络的
怎么说呢,我看资料,很多神经网络上来都是一堆不知道干什么的数组,让一个很久没接触数学的人直接看的话会很难受,数据莫名其妙,结论也莫名奇妙。
我考虑了下,很多人给出的模型根本看不懂,毕竟隔行如隔山嘛。那么机智的小y想到了,如果我用一个简单的数学模型去分析的话,这样结论大家也能猜到,也会进行调优,优化。
怎么选模型难住了小y,突然想到平抛不就是个最简单的模型吗,把平抛简化后不就是抛物线模型吗,对称轴是y轴的二次函数。对就用他,摒弃资料的模型,直接创新!
首先使用二次函数获得所需要的数据
在这里插入图片描述
在matlab中
在这里插入图片描述
在矩阵运算中,x乘法需要加.

使用newff创建一个前馈反向传播网络
在这里插入图片描述
newff可以传三个值,如下所示 net = newff(P,T,S)
P的通俗理解可以认为是输入向量,T的通俗理解为,通过某种映射法则获得的输出向量。S是隐藏层的大小。如图标红所示
在这里插入图片描述
后期大家自己玩可以调节试试。
哈,现在开始训练自己创建的神经网络,使用train函数
在这里插入图片描述
训练时会弹出类似于这样的一个对话框
在这里插入图片描述
太数学了,后期慢慢研究。
然后我们看看实验结果,使用sim函数:
在这里插入图片描述
net1是我们训练后的神经网络,那么A呢,A就是我们的输入向量,这里A取值
在这里插入图片描述
这个时候我们希望A的输出应该是100 ~ 0 ~ 100的一个值,使用plot函数画出他的形状

在这里插入图片描述
这里面预测的值的结果用o去表示,然后运行程序。
在这里插入图片描述

-5 ~ 0 ~ 5 的值是已知的,落在线上符合我的理解,o是预测值,当x轴为-10时预测值约在98,符合预测,当x轴为10时,对应的预测值约在99左右,已经不符合预期了。看来需要调优。
观察几个性能参数
性能如下:
在这里插入图片描述
训练状态如下
在这里插入图片描述
回归如下
在这里插入图片描述
在这里插入图片描述
使用了3层隐藏层。
后记:经过资料查阅得知,隐藏层并不是越多越好,也需要按实际的情况去测试。而且每次运行的结果也会不同,需要多多测试然后将自己的网络保存。
如果newff函数不做任何参数时,他的激活函数长成这样
在这里插入图片描述
更换激活函数
在这里插入图片描述

加入了logsig参数后其变成了这样
在这里插入图片描述
调参后,网络图如下图所示:
在这里插入图片描述

train函数

这里写下补充:

  1. newff

newff(P、T、S、TF、BTF、BLF、PF、IPF、OPF、DDF)采用可选输入,
TFi——第i层的传递函数。默认为“tansig”
隐藏层,输出层为“purelin”。
BTF-Backrop网络训练功能,默认为“trainlm”。
BLF-Backrop权重/偏差学习函数,默认值=“learngdm”。
PF-性能函数,默认值=“mse”。
IPF—输入处理函数的行单元阵列。
默认值为{“fixunknowns”、“mconsntrows”、“apminmax”}。
输出处理函数的行单元阵列。
默认值为{‘emconsntrows’,‘apminmax’}。
DDF—数据划分功能,默认为“divideerand”;
并返回一个N层前馈反向网络。

  1. train
    训练浅层神经网络, 此函数训练一个浅层神经网络。对于使用卷积或 LSTM 神经网络的深度学习。
    [trainedNet,tr] = train(net,X,T,Xi,Ai,EW,Name,Value)
    输入参数
    net - 输入网络
    network 对象
    X - 网络输入
    矩阵 | 元胞数组 | 合成数据 | gpuArray
    T - 网络目标
    零 (默认值) | 矩阵 | 元胞数组 | 合成数据 | gpuArray
    Xi - 初始输入延迟条件
    零 (默认值) | 元胞数组 | 矩阵
    Ai - 初始层延迟条件
    零 (默认值) | 元胞数组 | 矩阵
    EW - 误差权重,元胞数组
    名称-值参数
    useParallel - 用于指定并行计算的选项
    ‘no’ (默认值) | ‘yes’
    useGPU - 用于指定 GPU 计算的选项
    ‘no’ (默认值) | ‘yes’ | ‘only’
    showResources - 用于显示资源的选项
    ‘no’ (默认值) | ‘yes’
    reduction - 减少内存使用量
    1 (默认值) | 正整数
    CheckpointFile - 检查点文件
    ‘’ (默认值) | 字符向量
    CheckpointDelay - 检查点延迟
    60 (默认值) | 非负整数
    输出参数
    trainedNet - 经过训练的网络
    network 对象
    tr - 训练记录,结构体

    源代码下载路径如下
https://download.csdn.net/download/qq_43161960/88577292?spm=1001.2014.3001.5503

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/180082.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入Rust的模式匹配与枚举类型

今天,我们将深入探讨Rust语言中的两个强大特性:模式匹配(Pattern Matching)和枚举类型(Enums)。这两个特性是Rust提供的核心工具之一,它们在处理多种类型的数据和复杂的逻辑控制中发挥着关键作用…

七、Lua字符串

文章目录 一、字符串(一)单引号间的一串字符(二)local str "Hello, "(三)[[ 与 ]] 间的一串字符(四)例子 二、字符串长度计算(一)string.len&…

技巧-PyTorch中num_works的作用和实验测试

简介 在 PyTorch 中,num_workers 是 DataLoader 中的一个参数,用于控制数据加载的并发线程数。它允许您在数据加载过程中使用多个线程,以提高数据加载的效率。 具体来说,num_workers 参数指定了 DataLoader 在加载数据时将创建的…

深度学习之图像分类(十五)DINAT: Dilated Neighborhood Attention Transformer理论精简摘要(二)

Dilated Neighborhood Attention Transformer摘要 局部注意力机制:例如滑动窗口Neighborhood Attention(NA)或Swin Transformer的Shifted Window Self Attention。 优点:尽管在降低自注意力二次复杂性方面表现出色, …

微服务知识大杂烩

1.什么是微服务? 微服务(Microservices)是一种软件架构风格,将一个大型应用程序划分为一组小型、自治且松耦合的服务。每个微服务负责执行特定的业务功能,并通过轻量级通信机制(如HTTP)相互协作。每个微服务可以独立开发、部署和扩展,使得应用程序更加灵活、可伸缩和可…

docker 安装elasticsearch集群

准备工作 docker 安装好,docker compose 安装好编辑好docker-compose.yml文件(本文会提供)生成elastic-certificates.p12密钥,与docker-compose文件在同一个目录(本文会介绍生成方式)准备elasticsearch配置…

Selenium 学习(0.17)——软件测试之测试用例设计方法——白盒测试——逻辑覆盖法(条件覆盖和条件判定覆盖)

条件覆盖 设计测试用例,使每个判断中每个条件的可能取值至少满足一次。 条件判定覆盖 通过设计足够的测试用例,满足如下条件: 所有条件的可能至少执行一次的取值 所有判断的可能结果至少执行一次 条件判定覆盖同时满足判定覆…

centos7.9 + gitlab12.3.0安装

本文在centos7.9操作系统上安装gitlab 12.3.0,gitlab官方最新的版本已经是16.6.0了,这里仍然安装12.3.0版本的原因是汉化包的最新版本是12.3.0,如果汉化包的版本和gitlab的版本不对应,会出现汉化他无法启动的现象。 1、安装依赖 …

Python 图形用户界面详解(GUI,Tkinter)

文章目录 1 概述1.1 TK:窗口1.2 官方文档 2 组件2.1 Label:标签2.2 Button:按钮2.3 Entry:输入2.4 Text:文本2.5 Radiobutton:单选框2.6 Checkbutton:复选框2.7 Canvas:画布2.10 Men…

Shell条件变量练习

1.算数运算命令有哪几种? (1) "(( ))"用于整数运算的常用运算符,效率很高 [rootshell scripts]# echo $((24*5**2/8)) #(( ))2452814 14 (2) "$[ ] "用于整数运算 [rootshell scripts]# echo $[24*5**2/8] #[ ]也可以运…

Python缺失值处理实现

在数据处理相关工作中,读取的数据中常常会有缺失值的情况,为顺利进行后续的操作,需要首先对缺失值进行处理,处理的方式一般为删除或填充,Python中提供了专门的工具包,可以方便地进行实现。读取操作可以由pa…

WebGL技术框架及功能

WebGL(Web Graphics Library)是一种用于在Web浏览器中渲染交互式3D和2D图形的JavaScript API。它允许在不需要插件的情况下,在支持WebGL的浏览器中直接运行高性能的图形渲染。WebGL没有一个固定的技术框架,而是基于JavaScript API…

【Vue】绝了!这生命周期流程真...

hello,我是小索奇,精心制作的Vue系列持续发放,涵盖大量的经验和示例,如果对您有用,可以点赞收藏哈~ 生命周期 Vue.js 组件生命周期: 生命周期函数(钩子)就是给我们提供了一些特定的…

SpringBoot整合MongoDB: 构建高效的数据存储应用

文章目录 1. 引言2. MongoDB简介3. 准备工作4. SpringBoot中配置MongoDB5. 创建MongoDB实体类6. 使用Spring Data MongoDB进行数据操作7. 编写Service层8. 控制器层9. 测试10. 拓展10.1. 复杂查询10.2. 数据分页10.3. 索引优化 11. 总结 🎉SpringBoot整合MongoDB: 构…

Django回顾2

目录 一.HTTP 1.URL介绍 2.格式: 3.补充: 二.web框架 1.什么是框架 2.什么是web框架 3.wsgi协议 基于wsgi协议的web服务器: 4.协议是怎么规定的 三.Django 1.MVC与MTV模型(所有框架其实都遵循MVC架构) 2.…

别太担心,人类只是把一小部分理性和感性放到了AI里

尽管人工智能(AI)在许多方面已经取得了重大进展,但它仍然无法完全复制人类的理性和感性。AI目前主要侧重于处理逻辑和分析任务,而人类则具有更复杂的思维能力和情感经验。 人类已经成功地将一些可以数据化和程序化的理性和感性特征…

企业级开发链表思路

项目结构 头文件代码 头文件代码LinkList.h #ifndef LINKLIST_H #define LINKLIST_H #include <stdio.h> #include <stdlib.h> #include <iostream> // 链表小节点 typedef struct LINKBODE {struct LINKBODE* next;}LinkNode; // 遍历的函数指针 typedef …

人工智能|机器学习——感知器算法原理与python实现

感知器算法是一种可以直接得到线性判别函数的线性分类方法&#xff0c;它是基于样本线性可分的要求下使用的。 一、线性可分与线性不可分 为了方便讨论&#xff0c;我们蒋样本增加了以为常数&#xff0c;得到增广样向量 y&#xff08;1;;;...;&#xff09;,则n个样本的集合为&a…

零信任安全:远程浏览器隔离(RBI)的重要性

引言 在当今数字化时代&#xff0c;网络安全已成为个人和企业关注的焦点。随着网络攻击和恶意软件的不断增加&#xff0c;远程浏览器隔离(RBI)SAAS系统变得至关重要。本文将深入探讨远程浏览器隔离系统的重要性&#xff0c;以及它如何帮助用户保护其网络免受恶意软件和网络攻击…

蓝桥杯day02——Fizz Buzz

1、题目 给你一个整数 n &#xff0c;找出从 1 到 n 各个整数的 Fizz Buzz 表示&#xff0c;并用字符串数组 answer&#xff08;下标从 1 开始&#xff09;返回结果&#xff0c;其中&#xff1a; answer[i] "FizzBuzz" 如果 i 同时是 3 和 5 的倍数。answer[i] &…