羽隔已就之图像处理之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.hqwc.cn/news/226489.html

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

相关文章

关于Unity中字典在Inspector的显示

字典在Inspector的显示 方法一:实现ISerializationCallbackReceiver接口 《unity3D游戏开发第二版》记录 在编辑面板中可以利用序列化监听接口特性对字典进行序列化。 主要继承ISerializationCallbackReceiver接口 实现OnAfterDeserialize() OnBeforeSerialize() …

动态规划--使用最小花费爬楼梯

题目描述 给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 请你计算并返回达到楼梯顶部的最低花费。 示例…

【FGPA】Verilog:JK 触发器 | D 触发器 | T 触发器 | D 触发器的实现

0x00 JK 触发器 JK 触发器是 RS 触发器和 T 触发器的组合,有两个输入端 J 和 K,如果两个输入端都等于 1,则将当前值反转。 行为表 状态图 Timing Diagram Circuit JK 触发器的设计目的是防止 RS 触发器在输入 S 和 R 均等于 …

2020年1月31日 Go生态洞察:pkg.go.dev的未来步骤

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

安卓开发学习---kotlin版---笔记(一)

Hello word 前言:上次学习安卓,学了Java开发,简单的搭了几个安卓界面。这次要学习Kotlin语言,然后开发安卓,趁着还年轻,学点新东西,坚持~ 未来的你会感谢现在努力的你~ 主要学习资料&#xff1a…

Day12 qt QMianWindow,资源文件,对话框,布局方式,常用ui控件

QMianWindow 概述 QMainWindow 是一个为用户提供主窗口程序的类,包含一个菜单栏( menu bar )、多 个工具栏 (tool bars) 、多个铆接部件 (dock widgets) 、一个状态栏 (status bar) 及 一个中心部件 (central widget) 许多应用程序的基础…

matlab配置

matlab配置 windowslinux挂载安装MATLAB windows 按照这里一步步配置就行( 移动硬盘中软件备份中自取) linux linux配置步骤 挂载 sudo mount -t auto -o loop /media/oyk/Elements/ubuntu/MATLAB/R2017a_glnxa64_dvd1.iso ./matlab/安装MATLAB 挂载完成后,先…

无人机光伏巡检代替人工,贵州电站运维升级

无人机光伏巡检如何做到降本增效?贵州省光伏电站有新招!某70MWp的光伏电站通过引入复亚智能无人机光伏巡检系统,专注于使用无人机对区域内的光伏面板进行自动巡航巡查,利用自动化巡检和故障识别技术,显著提升了光伏电站…

vue中:计算属性computed

1. 在computed中定义计算属性方法根据已有的数据进行计算返回一个要显示的新数据 2. 在页面中使用{{计算属性名}}来显示返回的数据 3. computed: 内部有缓存, 多处读取只计算一次 4. 计算属性默认相当于只有getter来根据已有数据计算返回一个新数据值, 也可以指定setter来监…

pandas(八)--实战一下

背景 收到一批数据,数据形式。采集数据的间隔时间是10分钟,全天采集数据,每天的数据量是144条 处理后的数据形式 分析 去除表格中的q的异常值,置为0去除重复行将原始表格中的date分裂成日期和时间缺失的时间点数据补0&#x…

【功能测试】软件系统测试报告

1.引言 1.1.目的 本测试报告为 xxx 系统测试报告,本报告目的在于总结测试阶段的测试及测试结果分析,描述系统是否达到需求的目的。 本报告预期参考人员包括测试人员、测试部门经理、开发人员、项目管理人员等。 1.2.参考文档 《xxxx系统需求规格说明…

leetcode LCR24反转单链表

反转单链表 题目描述 题目分析 先来说迭代的思想: 上面next cur->next应该放在cur->next pre前面执行,这里笔误 再来说递归的思想: 题目代码 这个代码里面我加了我自己写的测试数据,自己可以去找对应的部分&#xff0c…