在Matlab中获取神经网络的神经元权重

时间:2015-04-22 07:37:44

标签: matlab neural-network

我已经训练了一个神经网络,如下所示: enter image description here

net.b返回两个值:

<25x1 double>
0.124136217326482

net.IW返回两个版本:

<25x16 double>
[]

net.LW返回以下内容:

[]  []
<1x25 double>   []

我假设new.LW返回单个隐藏层中25个神经元的权重。

我不明白net.IW返回的内容以及他们获得数字16的位置。

请帮忙!

编辑:已添加培训代码

netJan = newff(trainX', trainY', networkConfigJan, {'tansig','purelin'},'trainlm');
netJan.trainParam.goal = 1e-9;
netJan.trainFcn = 'traingda';
netJan = train(netJan, trainX', trainY');

尺寸

  • trainX有10列,2153行
  • trainY有1列,2153行

在此代码之后,我继续执行仅有10个输入列的预测,因此其他6个是完全内部的。

我期待的是:

25x1数组告诉我隐藏层中每个神经元的值。

10x25阵列告诉我每条线的重量&#39;从输入层到隐藏层。

25x1阵列告诉我每条线的重量&#39;从隐藏层到输出层。

编辑2:

net = feedforwardnet( [25] );
net = train( net, trainX', trainY' );
size( net.IW{1}' ) % 10 x 25 , Yay!
net = newff(trainX', trainY', [25]);
net = train(net, trainX', trainY');
size( net.IW{1}' ) % 16 x 25, How is this possible?

1 个答案:

答案 0 :(得分:4)

你非常隐蔽的问题

您的数据在第1,2,3,8,9和10列中只有NaN个值。

>> sum( isnan( trainX ) )
ans =
     3     3     3     0     0     0     0     1     1     1

我过滤了结果并得到了有意义的结果。

>> goodX = trainX( sum( ~isnan( trainX ), 2 ), : );
>> goodY = trainY( sum( ~isnan( trainX ), 2 ), : );
>> netJan = newff(goodX', goodY', [25], {'tansig','purelin'},'trainlm');
>> size( netJan.IW{1}' )
ans =
    10    25
>> size( netJan.LW{2,1}' )
ans =
    25     1

有效数据的观众解决方案

假设您设置了这样的NN。

% Dummy NN
trainX = rand(2153,10);
trainY = rand(2153,1);
net = feedforwardnet( [25] );
net = train( net, trainX', trainY' );

您应该使用feedforwardnet代替newff

  

在R2010b NNET 7.0中已过时。最后用于R2010a NNET 6.0.4。

     

推荐的功能是feedforwardnet。

请注意,我的调用会为以下NN初始化调用生成类似的NN。

netJan = newff(trainX', trainY', [25], {'tansig','purelin'},'trainlm');
netJan.trainParam.goal = 1e-9;
netJan.trainFcn = 'traingda';
netJan = train(netJan, trainX', trainY');
  

25x1数组告诉我隐藏层中每个神经元的值。

您只需传播输入/神经元值即可获得此

  

10x25阵列告诉我每条线的重量&#39;从输入层到隐藏层。

net.IW{1}
  

25x1阵列告诉我每条线的重量&#39;从隐藏层到输出层。

net.LW{2,1}'

测试尺寸:

>> size( trainX )
ans =
        2153          10
>> size( trainY )
ans =
        2153           1
>> size( net.IW{1}' )
ans =
    10    25
>> size( net.LW{2,1}' )
ans =
    25     1

培训窗口

Training window

网络视图

Network view