Matlab中神经网络的解析形式

Matlab中神经网络的解析形式,matlab,machine-learning,neural-network,deep-learning,Matlab,Machine Learning,Neural Network,Deep Learning,我试图以解析的方式重现Matlab的神经网络函数,以便更好地理解它。我已经看了以下内容,但我仍然有问题 这是我的简单例子。我想拟合一个具有1个隐藏层的前馈神经网络,假设10个神经元,在给定一些数据的情况下,估计函数y=sin(4x),x在[0,3]中。我想写我自己的Matlab函数来解析地表达Matlab的神经网络函数 通过训练网络,Matlab告诉我传递函数是tansig(隐藏层1)和purelin(输出)。它还告诉我输入和输出处理函数是mapminmax 以下是我编写的代码,这是一个比较简单

我试图以解析的方式重现Matlab的神经网络函数,以便更好地理解它。我已经看了以下内容,但我仍然有问题

这是我的简单例子。我想拟合一个具有1个隐藏层的前馈神经网络,假设10个神经元,在给定一些数据的情况下,估计函数y=sin(4x),x在[0,3]中。我想写我自己的Matlab函数来解析地表达Matlab的神经网络函数

通过训练网络,Matlab告诉我传递函数是tansig(隐藏层1)和purelin(输出)。它还告诉我输入和输出处理函数是
mapminmax

以下是我编写的代码,这是一个比较简单的示例:我的分析函数、Matlab的预测和我想要估计的真实函数:

rng(1);

xTrain = 0:0.5:3; % Training data
yTrain = sin(4*xTrain); % Training data

net = fitnet(10); % 10 neurons

net = train(net,xTrain,yTrain);

xPred = 0:0.1:3; % Prediction data

% Analytic

% Scale input
NNinput = mapminmax(xPred,net.inputs{1}.processedRange(1,1),net.inputs{1}.processedRange(1,2)); 
HL1 = tansig(net.IW{1,1}*NNinput + repmat(net.b{1},[1,size(NNinput,2)]));
HL2 = purelin(net.LW{2,1}*HL1 + repmat(net.b{2},[1,size(HL1,2)]));

% Scale output
PredValsAnlyt = mapminmax(HL2,net.outputs{2}.range(1,1),net.outputs{2}.range(1,2));

% True function
yTrue = sin(4*xPred);

% Matlab prediction
yPred = net(xPred);

figure;

plot(xPred,PredValsAnlyt,xPred,yPred,xPred,yTrue)
legend('My analytic','Matlab prediction','True')
这是比较我的分析函数、Matlab预测和真实函数的输出。虽然由于数据粗糙,我不希望Matlab的预测接近真实函数,但我希望我的分析函数和Matlab的预测应该是相同的。让我烦恼的是,Matlab的预测实际上超出了输出的[-1,1]目标范围。我是不是错过了什么?

更新日期:2019年3月29日: 在挖掘了各个网站的更多信息并使用Matlab之后,上面的代码似乎是这样的,而不是这样

PredValsAnlyt = mapminmax(HL2,net.outputs{2}.range(1,1),net.outputs{2}.range(1,2))
我们有

PredValsAnlyt = mapminmax('reverse',HL2,net.outputs{2}.processSettings{1})
我能够使我的代码与Matlab的输出相一致

因此,现在的问题归结为在Matlab中使用反向选项和指定的过程设置来理解mapminmax。有人熟悉这个吗?它并不是简单地执行一个缩放过程来实现目标min和max,因为这是我在原始代码中所做的