理解乙状结肠感知器模型的问题

时间:2018-10-21 12:19:59

标签: matlab

我是Matlab的新手,我目前正在尝试创建一个具有S型激活功能的单层感知器,以更新权重。

我得到的指示显示为:

”(针对每个培训示例(xe,是)

  • 计算输出:o = s(s)= 1 /(1 + e-s),其中:s =Σi= 0d wi xi

  • 如果感知器无法正确响应,请计算体重校正:

Δwi=Δwi+η(ye-oe)s(s)(1-s(s))xie

使用所有示例中的累积误差更新权重

wi = wi +Δwi//梯度下降规则“

我尝试了一些示例,但是遇到了维数错误,并且在理解此处要计算的元素时遇到了问题。我找到了一个模板并对其进行了调整(如下所示),这似乎可以解决尺寸问题,但是我仍然不明白为什么必须创建一个新变量(npats)以用于输入。

其次,权重和结果似乎没有变化,我不确定为什么。

npats = 4;
x_inputs = [1 0 0 1;1 0 1 1];
Desired = [0 1 1 0];
lr = 0.1;
inputs = [ones(1,npats); x_inputs];
weights = [0 -1 -1];

for i = 1:100

  k = 1+rem(i,npats);
  output = 1./(1+exp(-1.*(weights * inputs(:, k)))) > 0;
  fprintf('%2d. output = ',output); 
  disp(output);
  if output == Desired, break, end

  weights = weights + lr * (Desired(k) -output) * output * (1 - output)*inputs(:,k)';
  fprintf('%2d.  Weights = ',i);
  disp(weights);
  disp(output);
   pause(0.5)

end

对此我们将提供任何帮助或指导

0 个答案:

没有答案