Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么在对相同数据进行预测时,在MATLAB中修改递归神经网络的权重不会导致输出改变? 我考虑以下递归神经网络(RNN):_Matlab_Machine Learning_Neural Network_Regression_Recurrent Neural Network - Fatal编程技术网

为什么在对相同数据进行预测时,在MATLAB中修改递归神经网络的权重不会导致输出改变? 我考虑以下递归神经网络(RNN):

为什么在对相同数据进行预测时,在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是输入(实数向量),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] = 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
网络背后的理论是什么