反馈型神经网络 | 您所在的位置:网站首页 › 前馈神经网络和反馈神经网络各有什么特点 › 反馈型神经网络 |
反馈型神经网络(recurrent networks)是一种从输出到输入具有反馈连接的神经网络,其结构比前馈网络要复杂得多。典型的反馈型神经网络有Elman网络和Hopfield网络。Elman网络是两层反向传播网络,隐层和输入向量连接的神经元,其输出不仅作为输出层的输入,而且还连接隐层内的另外也一些神经元,反馈到隐层的输入。由于其输入表示了信号的空域信息,而反馈支路是一个延迟单元,反映了信号的时序信息,所以Elman网络可以在时域和空域上进行模式识别。 Hopfield网络又称为联想记忆网络,它常常存储一个或多个稳定的目标向量,当网络输入端输入相似的向量时,这些稳定的目标向量将“唤醒”网络记忆的模式,并通过输出呈现出来。 一、反馈神经网络的函数1. 创建函数1.1 newhop函数该函数用于创建一个离散的Hopfield神经网络,函数的调用格式为: net = newhop(T) 其中,T为目标向量,net为生成的神经网络。newhop返回反馈网络的权值偏差。向量元素的取值为-1或1,函数返回创建好的hopfield网络,并在给定的向量上有稳定的平衡点,且需要使为平衡点尽可能少。 1.2 newelm函数该函数用于创建一个Elman函数。函数的调用格式为: net = newelm(P,T[S1,S2,...S(N-1)],{TF1,TF2,...,TFN1},BTF,BLF,PF,IPF,OPF,DDF) 其中,P为Q1组R维的输入向量矩阵;T为Q2组SN维的输出向量矩阵;Si为各层神经元的个数;TFi为各层的传递函数,默认为tansig函数;BTF网络的训练函数,默认为trainlm函数;BLF为BP学习算法,默认为learngdm函数;PF网络的性能函数,默认为mse函数;IPF为输入处理函数的行单元阵列,默认为fixunknowns、removeconstantrows和mapminmax函数;OPF为输出处理函数的行单元阵列,默认为removeconstantrows和mapminmax函数;DDF为数据函数,默认为dividerand函数;net为生成的新Elman网络。 clear all; clc; T1=1:80; x1=cos(1:20); x2=3*cos(1:20); t1=ones(1,20); t2=3*ones(1,20); p=[x1 x2 x1 x2]; t=[t1 t2 t1 t2]; x=con2seq(p);%将矩阵信号转换为序列信号 T=con2seq(t); plot(T1,cat(2,x{:}),':',T1,cat(2,T{:}),'-'); [r,n]=size(x); [s2,n2]=size(t); s1=10; net=newelm(x,T,[s1 s2],{'tansig','purelin'},'trainlm'); net.trainParam.epochs=500; [net,tr]=train(net,x,T); y=sim(net,x); hold on plot(T1,cat(2,y{:}),'o',T1,cat(2,T{:}),'p'); legend('输入信号曲线','目标信号曲线','输出信号曲线','目标信号曲线');![]() 用于创建识别神经网络。函数的调用格式为: patternnet(hiddenSizes,trainFxn,performFcn) 其中,参数hiddenSizes为隐含层的大小,是一个行向量,默认值为10;trainFcn表示hi函数的字符串,默认值为’trainscg’;performFcn为一个性能函数,默认值为‘crossentropy’。 1.4 elmannet函数elmannet函数创建的Elman神经网络是局部反馈网络,在计算时采用staticderiv函数计算导数,其调用格式为: elmannet(layerdelays,hiddenSizes,trainFcn) 其中,参数layerdelays表示网络层延迟的行向量,可取的值为0或整数,默认值为1:2;hiddenSizes为隐含层的大小,是一个行向量,默认值为10;trainFcn表示训练函数的字符串,默认值为‘trainlm’。 2. 传递函数2.1 satlin函数该函数为饱和线性传递函数,是神经网络的传递函数,它用神经元的网络输入计算网络输出。 ![]() 2.2 satlins函数 该函数表示对称饱和传递函数。 二、反馈神经网络的应用1. 离散Hopfield神经网络设计一个Hopfield网络,使其具有联想记忆功能,能正确是被阿拉伯数字,当数字被噪声污染后仍可以正确识别。 clear all; clc; ones=[-1 -1 -1 -1 1 1 -1 -1 -1 -1;... -1 -1 -1 -1 1 1 -1 -1 -1 -1;... -1 -1 -1 -1 1 1 -1 -1 -1 -1;... -1 -1 -1 -1 1 1 -1 -1 -1 -1;... -1 -1 -1 -1 1 1 -1 -1 -1 -1;... -1 -1 -1 -1 1 1 -1 -1 -1 -1;... -1 -1 -1 -1 1 1 -1 -1 -1 -1;... -1 -1 -1 -1 1 1 -1 -1 -1 -1;... -1 -1 -1 -1 1 1 -1 -1 -1 -1;... -1 -1 -1 -1 1 1 -1 -1 -1 -1]; twos=[-1 1 1 1 1 1 1 1 1 -1;... -1 1 1 1 1 1 1 1 1 -1;... -1 -1 -1 -1 -1 -1 -1 -1 1 1;... -1 -1 -1 -1 -1 -1 -1 -1 1 1;... -1 1 1 1 1 1 1 1 1 -1;... -1 1 1 1 1 1 1 1 1 -1;... -1 1 1 -1 -1 -1 -1 -1 -1 -1;... -1 1 1 -1 -1 -1 -1 -1 -1 -1;... -1 1 1 1 1 1 1 1 1 -1;... -1 1 1 1 1 1 1 1 1 -1]; % 利用这两个数字点阵构成训练样本T T=[ones;twos]'; % 利用newhop函数创建一个离散型hopfield神经网络 net=newhop(T); noisy_one=ones; noisy_two=twos; for i =1:100 a=rand; if a |
CopyRight 2018-2019 实验室设备网 版权所有 |