在Matlab中计算神经网络的方程

时间:2012-01-12 15:28:43

标签: matlab expression neural-network equation bias-neuron

我创建了一个神经网络matlab。这是脚本:


    load dati.mat;
    inputs=dati(:,1:8)';
    targets=dati(:,9)';
    hiddenLayerSize = 10;
    net = patternnet(hiddenLayerSize);
    net.inputs{1}.processFcns = {'removeconstantrows','mapminmax', 'mapstd','processpca'};
    net.outputs{2}.processFcns = {'removeconstantrows','mapminmax', 'mapstd','processpca'};

    net = struct(net);
    net.inputs{1}.processParams{2}.ymin = 0;
    net.inputs{1}.processParams{4}.maxfrac = 0.02;
    net.outputs{2}.processParams{4}.maxfrac = 0.02;
    net.outputs{2}.processParams{2}.ymin = 0;
    net = network(net);

    net.divideFcn = 'divideind';  
    net.divideMode = 'sample';  % Divide up every sample
    net.divideParam.trainInd = 1:428;
    net.divideParam.valInd = 429:520;
    net.divideParam.testInd = 521:612;
    net.trainFcn = 'trainscg';  % Scaled conjugate gradient backpropagation
    net.performFcn = 'mse';  % Mean squared error
    net.plotFcns = {'plotperform','plottrainstate','ploterrhist', 'plotregression', 'plotconfusion', 'plotroc'};
    net=init(net);
    net.trainParam.max_fail=20;

    [net,tr] = train(net,inputs,targets);

    outputs = net(inputs);
    errors = gsubtract(targets,outputs);
    performance = perform(net,targets,outputs)

现在我想保存网络的权重和偏差并编写等式。 我保存了重量和偏差:


    W1=net.IW{1,1};
    W2=net.LW{2,1};
    b1=net.b{1,1};
    b2=net.b{2,1};

所以,我已完成数据预处理,并编写了以下等式


    max_range=0;
    [y,ps]=removeconstantrows(input, max_range);

    ymin=0;
    ymax=1;
    [y,ps2]=mapminmax(y,ymin,ymax);

    ymean=0;
    ystd=1;
    y=mapstd(x,ymean,ystd);

    maxfrac=0.02;
    y=processpca(y,maxfrac);

    in=y';

    uscita=tansig(W2*(tansig(W1*in+b1))+b2);

但是使用相同的输入输入= [1:8]我会得到不同的结果。为什么?怎么了? 请帮帮我!这很重要!

我使用Matlab R2010B

2 个答案:

答案 0 :(得分:1)

看起来您正在预处理输入但不对输出进行后处理。后处理使用“反向”处理表格。 (目标是预处理的,因此输出会被反向处理)。

答案 1 :(得分:-1)

这个等式

uscita=tansig(W2*(tansig(W1*in+b1))+b2); 

错了。为什么要写两个tansig?你有10个nerouns你应该写10次或用于i=1:10;