为什么在对相同数据进行预测时,在MATLAB中修改递归神经网络的权重不会导致输出改变? 我考虑以下递归神经网络(RNN):
其中,x是输入(实数向量),h是隐藏状态向量,y是输出向量。我使用一些数据x在Matlab上训练网络,得到W、V和U 然而,在MATLAB中,将矩阵W更改为W',并保持U、V不变后,使用W的RNN的输出(y)与使用W'的RNN的输出(y')相同,当两者都对相同的数据进行预测时。只要看上面的等式,这两个输出应该是不同的,但我似乎无法在MATLAB中做到这一点(当我修改V或U时,输出会发生变化)。我如何修复代码,使输出(y)和(y')与它们应有的不同 相关代码如下所示:为什么在对相同数据进行预测时,在MATLAB中修改递归神经网络的权重不会导致输出改变? 我考虑以下递归神经网络(RNN):,matlab,machine-learning,neural-network,regression,recurrent-neural-network,Matlab,Machine Learning,Neural Network,Regression,Recurrent Neural Network,其中,x是输入(实数向量),h是隐藏状态向量,y是输出向量。我使用一些数据x在Matlab上训练网络,得到W、V和U 然而,在MATLAB中,将矩阵W更改为W',并保持U、V不变后,使用W的RNN的输出(y)与使用W'的RNN的输出(y')相同,当两者都对相同的数据进行预测时。只要看上面的等式,这两个输出应该是不同的,但我似乎无法在MATLAB中做到这一点(当我修改V或U时,输出会发生变化)。我如何修复代码,使输出(y)和(y')与它们应有的不同 相关代码如下所示: [x,t] = simple
[x,t] = simplefit_dataset; % x: input data ; t: targets
net = newelm(x,t,5); % Recurrent neural net with 1 hidden layer (5 nodes) and 1 output layer (1 node)
net.layers{1}.transferFcn = 'tansig'; % 'tansig': equivalent to tanh and also is the activation function used for hidden layer
net.biasConnect = [0;0]; % biases set to zero for easier experimenting
net.derivFcn ='defaultderiv'; % defaultderiv: tells Matlab to pick whatever derivative scheme works best for this net
view(net) % displays the network topology
net = train(net,x,t); % trains the network
W = net.LW{1,1}; U = net.IW{1,1}; V = net.LW{2,1}; % network matrices
Y = net(x); % Y: output when predicting on data x using W
net.LW{1,1} = rand(5,5); % This is the modified matrix W, W'
Y_prime = net(x) % Y_prime: output when predicting on data x using W'
max(abs(Y-Y_prime )); % The difference between the two outputs is 0 when it probably shouldn't be.
编辑:轻微更正。
这是第一层中的递归:(来自文档)
从第j层到第i层的权重矩阵
层(或空矩阵[])位于net.LW{i,j}if
层连接(i,j)为1(或0)
因此net.LW{1,1}
是从第一层到第一层的权重(即递归),而net.LW{2,1}
存储从第一层到第二层的权重。现在,如果可以随机更改递归的权重而不产生任何影响(实际上,可以将它们设置为零net.LW{1,1}=0(size(W));
而不产生任何影响),那么这意味着什么呢。请注意,这与放弃递归并创建简单前馈网络基本相同:
假设:递归没有效果。
您会注意到,如果将权重从第一层(5个神经元)更改为第二层(1个神经元)net.LW{2,1}=0(大小(V))
,它将影响您的预测(如果您更改输入权重net.IW
,当然也是如此)
为什么递归没有效果?
好吧,我不知道。我不知道这个特殊的故障在哪里,也不知道newelm
网络背后的理论是什么。
这是第一层中的递归:(来自文档)
从第j层到第i层的权重矩阵
层(或空矩阵[])位于net.LW{i,j}if
层连接(i,j)为1(或0)
因此net.LW{1,1}
是从第一层到第一层的权重(即递归),而net.LW{2,1}
存储从第一层到第二层的权重。现在,如果可以随机更改递归的权重而不产生任何影响(实际上,可以将它们设置为零net.LW{1,1}=0(size(W));
而不产生任何影响),那么这意味着什么呢。请注意,这与放弃递归并创建简单前馈网络基本相同:
假设:递归没有效果。
您会注意到,如果将权重从第一层(5个神经元)更改为第二层(1个神经元)net.LW{2,1}=0(大小(V))
,它将影响您的预测(如果您更改输入权重net.IW
,当然也是如此)
为什么递归没有效果?
好吧,我不知道。我不知道这个特殊故障在哪里,也不知道newelm
网络背后的理论是什么