用Matlab算BP神经网络的具体算法?

用Matlab算BP神经网络的具体算法?,第1张

BP神经网络的传递函数一般采用sigmiod函数,学习算法差袜闭一般采用最小梯度下降法;下面是具体的程序例子:

例1 采用动量梯度下降算法训练 BP 网络。

训练样本定义如下:

输入矢量

p =[-1 -2 3 1

-1 1 5 -3]

目标矢量为 t = [-1 -1 1 1]

解:本例的 MATLAB 程序如下:

close all

clear

echo on

clc

% NEWFF——生成一个虚裂新的前向神经网络

% TRAIN——对 BP 神经网络进行训练

% SIM——对 BP 神经网络进行仿真

pause

% 敲任意键开始

clc

% 定义好燃训练样本

% P 为输入矢量

P=[-1, -2,3,1 -1,1,5, -3]

% T 为目标矢量

T=[-1, -1, 1, 1]

pause

clc

% 创建一个新的前向神经网络

net=newff(minmax(P),[3,1],{'tansig','purelin'},'traingdm')

% 当前输入层权值和阈值

inputWeights=net.IW{1,1}

inputbias=net.b{1}

% 当前网络层权值和阈值

layerWeights=net.LW{2,1}

layerbias=net.b{2}

pause

clc

% 设置训练参数

net.trainParam.show = 50

net.trainParam.lr = 0.05学习速率

net.trainParam.mc = 0.9动量系数

net.trainParam.epochs = 1000

net.trainParam.goal = 1e-3

pause

clc

% 调用TRAINGDM 算法训练 BP 网络

[net,tr]=train(net,P,T)

pause

clc

% 对 BP 网络进行仿真

A = sim(net,P)

% 计算仿真误差

E = T - A

MSE=mse(E)

pause

clc

echo off

newff 创建前向BP网络格式:

net = newff(PR,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF)

其中:PR —— R维输入元粗闹乱素的R×2阶岩档最大最小值矩阵; Si —— 第i层神经元的个数,共N1层; TFi——第i层的转移函数,默认‘tansig’; BTF—— BP网络的训练函数,默认‘trainlm’ BLF—— BP权值/偏差学习函数,默认弯汪’learngdm’ PF ——性能函数,默认‘mse’;(误差)

e.g.

P = [0 1 2 3 4 5 6 7 8 9 10]T = [0 1 2 3 4 3 2 1 2 3 4]

net = newff([0 10],[5 1],{'tansig' 'purelin'})net.trainparam.show=50 %每次循环50次net.trainParam.epochs = 500 %最大循环500次

net.trainparam.goal=0.01 %期望目标误差最小值

net = train(net,P,T) %对网络进行反复训练

Y = sim(net,P)Figure % 打开另外一个图形窗口

plot(P,T,P,Y,'o')


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12461650.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存