首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matlab神经网络工具箱,从前馈网络中提取权重和偏差

Matlab神经网络工具箱,从前馈网络中提取权重和偏差
EN

Stack Overflow用户
提问于 2016-11-28 04:53:45
回答 1查看 437关注 0票数 1

我的问题很简单。我已经训练了一个前馈网络。现在我想提取它的权重和偏差,这样我就可以在另一种编程语言上测试它了。但是,当我用自己的代码测试那些经过训练的权重时,它总是返回与神经工具box.here是我的代码不同的结果。

代码语言:javascript
复制
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')

它是一个简单的神经网络,只有两层。这里没有规模化或标准化的结果

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-28 09:54:10

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

代码语言:javascript
复制
 ....
net = feedforwardnet(topo);
net.inputs{1}.processFcns= {};
net.outputs{2}.processFcns= {};
net = train(net,x,t);
 ....

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

代码语言:javascript
复制
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));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40837406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档