羽隔已就之图像处理之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

复制代码
相关推荐
CareyWYR3 小时前
每周AI论文速递(251201-251205)
人工智能
北京耐用通信5 小时前
电磁阀通讯频频“掉链”?耐达讯自动化Ethernet/IP转DeviceNet救场全行业!
人工智能·物联网·网络协议·安全·自动化·信息与通信
cooldream20095 小时前
小智 AI 智能音箱深度体验全解析:人设、音色、记忆与多场景玩法的全面指南
人工智能·嵌入式硬件·智能音箱
oil欧哟5 小时前
AI 虚拟试穿实战,如何低成本生成模特上身图
人工智能·ai作画
央链知播5 小时前
中国移联元宇宙与人工智能产业委联席秘书长叶毓睿受邀到北京联合大学做大模型智能体现状与趋势专题报告
人工智能·科技·业界资讯
人工智能培训5 小时前
卷积神经网络(CNN)详细介绍及其原理详解(2)
人工智能·神经网络·cnn
YIN_尹6 小时前
目标检测模型量化加速在 openEuler 上的实现
人工智能·目标检测·计算机视觉
xixixi777776 小时前
从“视觉感知”到“逻辑结构”的转化,是计算机从“看到像素”到“理解含义”的认知飞跃
图像处理·图形渲染·逻辑结构·视觉感知
mys55186 小时前
杨建允:企业应对AI搜索趋势的实操策略
人工智能·geo·ai搜索优化·ai引擎优化
小毅&Nora6 小时前
【人工智能】【深度学习】 ⑦ 从零开始AI学习路径:从Python到大模型的实战指南
人工智能·深度学习·学习