我即将学习神经网络是如何工作的。让我明确一点:我不想使用任何内置函数。出于我的理解,我想从一开始就构建一个自己的感知器。例如,我根据下面的示意图构建了一个感知器:

除6和7神经元外,其余神经元均具有同一性函数。这两个神经元应具有logistic函数1/(1+e^(-x))。神经元1直接连接到6,神经元2直接连接到输出神经元8。
我现在的问题是如何实现这种特殊的情况。当所有神经元都是恒等式时,我得到C中的正确值。但是,如果我想在6和7上实现逻辑函数,我就会得到错误的值。
有没有可能找到一个通用的算法来覆盖这些特殊情况?(不同的激活函数,跳过层,反馈)。
我喜欢它尽可能地具有一般性和数学性。应该避免使用变通方法!
代码:
clear;
% Input Layer
o1 = 1;
o2 = 1;
o3 = 1;
% Hidden Layer
o4 = 0;
o5 = 0;
o6 = 0;
o7 = 0;
% Output Layer
o8 = 0;
% Init the Inputvektor:
O = [o1,o2,o3,o4,o5,o6,o7,o8];
C = 0;
% Weight Matrix:
% 1 2 3 4 5 6 7 8
W = [0,0,0,1,1,1,0,0; % 1
0,0,0,1,1,0,0,1 ; % 2
0,0,0,1,1,0,0,0 ; % 3
0,0,0,0,0,1,1,0 ; % 4
0,0,0,0,0,1,1,0 ; % 5
0,0,0,0,0,0,0,1 ; % 6
0,0,0,0,0,0,0,1 ; % 7
0,0,0,0,0,0,0,0]; % 8
% 3 Layer = 3 Iterations:
for c = 0:2
% Calculate Outputvektor (t+1):
A = O*W;
% Assing new Input vektor:
O = A;
% This seems not correct:
% I want to have Identityfunctions on all Neurons except on Neurons 6 and 7
% However I do not get the correct solutions at the end
O(6) = 1/(1+exp(-O(6)));
O(7) = 1/(1+exp(-O(7)));
% Result of the whole Net:
C = C + O
end发布于 2018-01-25 02:53:00
对于那些感兴趣的人,我已经自己找到了解决方案:
clear;
% Input Layer
o1 = 0.1;
o2 = 0.1;
o3 = 0.1;
% Hidden Layer
o4 = 0;
o5 = 0;
o6 = 0;
o7 = 0;
% Output Layer
o8 = 0;
Org = [o1,o2,o3,o4,o5,o6,o7,o8];
O = Org;
C = 0;
% 1 2 3 4 5 6 7 8
W = [0,0,0,1,1,1,0,0; % 1
0,0,0,1,1,0,0,1 ; % 2
0,0,0,1,1,0,0,0 ; % 3
0,0,0,0,0,1,1,0 ; % 4
0,0,0,0,0,1,1,0 ; % 5
0,0,0,0,0,0,0,1 ; % 6
0,0,0,0,0,0,0,1 ; % 7
0,0,0,0,0,0,0,0]; % 8
for c = 0:2
A = O*W;
O = A;
O(6) = 1/(1+exp(-1*O(6)));
O(7) = 1/(1+exp(-1*O(7)));
% THIS IS THE SOLUTION:
O = O + Org
endhttps://stackoverflow.com/questions/48419096
复制相似问题