【问题标题】:Matlab neural network tool box,on extract weight & bias from feedforwardnetMatlab 神经网络工具箱,关于从前馈网络中提取权重和偏差
【发布时间】:2016-11-28 18:33:33
【问题描述】:

我的问题很简单。我已经训练了一个前馈网络。现在我想提取它的权重和偏差,以便我可以在另一种编程语言上对其进行测试。但是,虽然我用自己的代码测试了那些训练好的权重,但与神经工具箱相比,它总是返回不同的结果。这是我的代码

close all 
RandStream.setGlobalStream (RandStream ('mrg32k3a','Seed', 1234));
[x,t] = simplefit_dataset;
plot(t)
hold on 
topo = [2]
net = feedforwardnet(topo);
net = train(net,x,t);
view(net)
y = net(x);
plot(y)

%rewrite net

BI = net.B{1};
WI = net.IW{1};

BO = net.B{2};
WO = net.LW{2};

% input layer

Z = WI*x + BI*ones(1,length(x));
Z = 2./(1+exp(-2*Z))-1;

Y = WO*Z + BO*ones(1,length(x));

plot(Y)
legend('target','tool box result','my result')

它是一个简单的神经网络,只有两层。 不暗示缩放或标准化 这是结果

【问题讨论】:

    标签: matlab neural-network


    【解决方案1】:

    神经网络输入和输出默认映射到[-1;1]范围,所以ZY的计算对于映射的值是正确的,而不是对于实际的输入和输出。为避免这种情况,您可以取消设置 processFcns 属性:

     ....
    net = feedforwardnet(topo);
    net.inputs{1}.processFcns= {};
    net.outputs{2}.processFcns= {};
    net = train(net,x,t);
     ....
    

    或者,您可以手动映射输入和输出值:

    x= mapminmax(x,-1,1);
    Z = WI*x + BI*ones(1,length(x));
    Z = 2./(1+exp(-2*Z))-1;
    Y = WO*Z + BO*ones(1,length(x));
    Y= mapminmax(Y,min(y),max(y));
    

    【讨论】:

    • 嗨,我对 matlab 缩放输入有点困惑......由于 matlab 神经网络工具箱使用缩放(范围 [1,-1])特征和目标作为学习输入,并且'缩放返回'(到原始大小)作为返回的学习输出。但是要“缩小”它需要我们知道实际的 MAX 和 MIN 值,这对于训练数据是有意义的(我们知道我们的原始目标)。我们没有 MAX 和 MIN 值的测试/预测部分会发生什么...
    猜你喜欢
    • 2011-07-08
    • 1970-01-01
    • 2020-04-01
    • 2015-06-03
    • 1970-01-01
    • 2018-03-01
    • 1970-01-01
    • 2015-05-11
    • 1970-01-01
    相关资源
    最近更新 更多