资讯详情

【MLPs+ESN】利用多层感知机MLPs对经典ESN(回声状态网络)的输出权值计算进行优化的MATLAB仿真

ESN如下所示:

本部分误差如下:

0.0435

ESN我不会介绍更多的部分。你应该知道的。让我们来看看。ESN和BP修改和解释改进和极限学习改进,并进行模拟。

首先,在原始ESN在中间,通过计算权值pseudoinverse.m这个函数进行计算的,其主要内容就是:

即:

我们的主要方法是:

将计算的权值视为bp神经网络迭代的初始值,然后以这个初始值作为迭代过程的第一值,不断训练迭代,最终获得ESN-BP然后测试输出的权值。

因此,其基本思路是通过B-1T获得初始权值,然后通过bp迭代网络,获得最终优化的值。

计算后的误差为0.0427

从以上对比可以看出,采用BP在神经网络进行权值系数的非线性更新后,其误差可以进一步降低。但提高性能有限。

这部分的原理和上面一样。不同的是,我们需要使用极限学习方法ESN更新网络中的权值。

误差为:0.1050

以下是整个算法的流程框图:

clc; clear;  close all; warning off; RandStream.setDefaultStream(RandStream('mt19937ar','seed',1)); addpath 'func\data_process\' addpath 'func\Initial_ESN\' addpath 'func\train_esn\' addpath 'func\test_esn\'   load data.mat %数据分割 train_fraction                           = 0.5; [trainInputSequence, testInputSequence]  = split_train_test(inputSequence,train_fraction); [trainOutputSequence,testOutputSequence] = split_train_test(outputSequence,train_fraction);  %generate an esn  nInputUnits          = 2;  nInternalUnits       = 32;  nOutputUnits         = 1;  esn                  = generate_esn(nInputUnits,nInternalUnits,nOutputUnits,'spectralRadius',0.5,'inputScaling',[0.1;0.1],'inputShiftteacherScaling',[0.3],'teacherShift',[-0.2],'feedbackScaling',0,'type','plain_esn');  esn.internalWeights  = esn.spectralRadius * esn.internalWeights_UnitSR;  %train the ESN %discard the first 100 points nForgetPoints        = 100;  %这里,固定设置默认学习方法,其他注释 [trainedEsn,stateMatrix] = train_esn(trainInputSequence,trainOutputSequence,esn,nForgetPoints) ;   %test the ESN nForgetPoints        = 100 ;  predictedTrainOutput = test_esn(trainInputSequence, trainedEsn, nForgetPoints); predictedTestOutput  = test_esn(testInputSequence,  trainedEsn, nForgetPoints) ;   figure; plot(testOutputSequence(nForgetPoints 4:end),'b'); hold on plot(predictedTestOutput,'r'); legend(原数据,预测数据; title('ESN-ELM:测试数据预测');   测试数据的预测结果为%: estimatedOutput = predictedTestOutput(1:end-3); correctOutput   = testOutputSequence(nForgetPoints 4:end);  nEstimatePoints = length(estimatedOutput) ;  nForgetPoints   = length(correctOutput) - nEstimatePoints ;   correctVariance = 1; meanerror       = sum((estimatedOutput - correctOutput).^2)/nEstimatePoints ;  err             =(sqrt(meanerror./correctVariance)); err  

A05-22

标签: 光幕式传感器esn

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台