神经网络显示误差表面的模式关联

显示误差表面的模式关联
一个线性神经元的目的是对特定的输入和目标输出做出反应。
X定义两个1-元素输入(列向量)。T定义相关的1-元素目标(列向量)。
X = [1.0 -1.2];
T = [0.5 1.0];
w_range = -1:0.1:1;
b_range = -1:0.1:1;
ES = errsurf(X,T,w_range,b_range,‘purelin’);
plotes(w_range,b_range,ES);
ERRSURF计算y神经元的误差范围,可能的权重和偏置值。PLOTES将这个误差表面与y轮廓图在下面。最佳的权重和偏差值是在误差表面最低点。
神经网络显示误差表面的模式关联
net = newlind(X,T);%求解y的最小误差;
SIM被用来模拟输入x的网络,我们可以计算神经元的误差。SUMSQR将平方错误加起来。
A = net(X)
E = T - A
SSE = sumsqr(E)
plotes(w_range,b_range,ES);
plotep(net.IW{1,1},net.b{1},SSE);
PLOTES重新画出误差表面。PLOTEP用SOLVELIN返回的权重和偏差值来绘制网络的“位置”。从图中可以看出,SOLVELIN找到了最小误差解。
神经网络显示误差表面的模式关联
x = -1.2;
y = net(x)%算出x=-1.2的y值;验证神经网络的正确性;
Training a Linear Neuron
X = [1.0 -1.2];
T = [0.5 1.0];
X定义两个1元素输入模式(列向量)。T定义相关的1元素目标(列向量)。采用y偏置的单个输入线性神经元可以解决这个问题。
ERRSURF计算y神经元的误差范围,可能的权重和偏置值。PLOTES将这个误差表面与y轮廓图在下面。最佳的权重和偏差值是导致误差表面最低点的结果。
神经网络显示误差表面的模式关联
MAXLINLR能够找到训练y线性网络最快的稳定学习速度。对于这个例子,这个速率只占这个最大值的40%。NEWLIN创建y线性神经元。NEWLIN采用了这些参数:1)Rx2矩阵的最小值和R输入元素的最大值,2)输出向量的数量,3)输入延迟向量,和4)学习速率。
maxlr = 0.40*maxlinlr(X,‘bias’);
net = newlin([-2 2],1,[0],maxlr);
net.trainParam.goal = .001;%训练表现的误差小于0.001;
为了体现训练的过程,我们每迭代一次,就会画一次图。每一个点表示一次迭代,蓝色线条表示在学习的规则下的每次变换;
% [net,tr] = train(net,X,T);
net.trainParam.epochs = 1;
net.trainParam.show = NaN;
h=plotep(net.IW{1},net.b{1},mse(T-net(X)));
[net,tr] = train(net,X,T);
r = tr;
epoch = 1;
while true
epoch = epoch+1;
[net,tr] = train(net,X,T);
if length(tr.epoch) > 1
h = plotep(net.IW{1,1},net.b{1},tr.perf(2),h);
r.epoch=[r.epoch epoch];
r.perf=[r.perf tr.perf(2)];
r.vperf=[r.vperf NaN];
r.tperf=[r.tperf NaN];
else
break
end
end
tr=r;
神经网络显示误差表面的模式关联
通过不断地进行一次迭代的神经元训练,最终当误差下降到目标迭代就停止了。