Я рассматриваю следующую рекуррентную нейронную сеть (RNN):
RNN на рассмотрении
, где x - это вход (вектор реал), h вектор скрытого состояния и y - выходной вектор. Я обучил сеть на Matlab, используя некоторые данные x и получил W, V и U.
Однако в MATLAB после замены матрицы W на W 'и сохранения U, V одинаковыми выход ( y ) RNN, который использует W, совпадает с выходом ( y ') RNN, который использует W, когда оба предсказывают одни и те же данные х . Эти два выхода должны отличаться, просто взглянув на вышеприведенное уравнение, но я не могу сделать это в 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.
Редактировать: незначительные исправления.