我已经训练了一个神经网络,如下所示:
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');
尺寸
在此代码之后,我继续执行仅有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?
答案 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
培训窗口
网络视图