neural network code explanation

纵然是瞬间 提交于 2019-12-12 03:53:01

问题


The following is an implementation of a simple Perceptron supplied in a blog.

input = [0 0; 0 1; 1 0; 1 1];
numIn = 4;
desired_out = [0;1;1;1];
bias = -1;
coeff = 0.7;
rand('state',sum(100*clock));
weights = -1*2.*rand(3,1);

iterations = 10;

for i = 1:iterations
     out = zeros(4,1);
     for j = 1:numIn
          y = bias*weights(1,1)+...
               input(j,1)*weights(2,1)+input(j,2)*weights(3,1);
          out(j) = 1/(1+exp(-y));
          delta = desired_out(j)-out(j);
          weights(1,1) = weights(1,1)+coeff*bias*delta;
          weights(2,1) = weights(2,1)+coeff*input(j,1)*delta;
          weights(3,1) = weights(3,1)+coeff*input(j,2)*delta;
     end
end

I have the following questions,

(1) which one is training data here?

(2) which one is test data here?

(3) which are the labels here?


回答1:


training data is [0 0; 0 1; 1 0; 1 1] in the other view every row is one set of training data as follow

    >> input

input =

 0     0
 0     1
 1     0
 1     1

and target is

   desired_out =

 0
 1
 1
 1

please think about desired_out this is your labels .. every row in training data(input) have a specific output(label) in binary set{0,1}(because this example for implementation of OR logic circuit.

in matlab you can use or function as below for further understanding:

    >> or(0,0)

    ans =

        0

    >> or(1,0)

    ans =

        1

    >> or(0,1)

   ans =

       1

   >> or(1,1)

   ans =

       1

Note that your code has not any training test and this code just trying to get weights and other parameters of perceptron but you can add training test to your code by just little program

    NumDataTest  =  10 ;
    test=randi( [0 , 1] , [ NumDataTest , 2]) ...
       +(2*rand(NumDataTest,2)-1)/20;

so test data will be similar to below

     test =

    1.0048    1.0197
    0.0417    0.9864
   -0.0180    1.0358
    1.0052    1.0168
    1.0463    0.9881
    0.9787    0.0367
    0.9624   -0.0239
    0.0065    0.0404
    1.0085   -0.0109
   -0.0264    0.0429

for test this data you can use your own program by below code:

    for i=1:NumDataTest
        y = bias*weights(1,1)+test(i,1)*weights(2,1)+test(i,2)*weights(3,1);
        out(i) = 1/(1+exp(-y));
    end

and finally:

     table(test(:,1),test(:,2),out,'VariableNames',{'input1' 'input2' 'output'})

output is

         input1       input2       output 
        _________    _________    ________

          1.0048       1.0197     0.99994
          0.041677      0.98637     0.97668
         -0.017968       1.0358     0.97527
          1.0052       1.0168     0.99994
          1.0463      0.98814     0.99995
          0.97875     0.036674      0.9741
          0.96238    -0.023861     0.95926
          0.0064527     0.040392    0.095577
          1.0085    -0.010895     0.97118
         -0.026367     0.042854    0.080808

Code section:

    clc
    clear
    input = [0 0; 0 1; 1 0; 1 1];
    numIn = 4;
    desired_out = [0;1;1;1];
    bias = -1;
    coeff = 0.7;
    rand('state',sum(100*clock));
    weights = -1*2.*rand(3,1);

    iterations = 100;

    for i = 1:iterations
    out = zeros(4,1);
        for j = 1:numIn
           y = bias*weights(1,1)+input(j,1)*weights(2,1)+input(j,2)*weights (3,1);
           out(j) = 1/(1+exp(-y));
           delta = desired_out(j)-out(j);
           weights(1,1) = weights(1,1)+coeff*bias*delta;
           weights(2,1) = weights(2,1)+coeff*input(j,1)*delta;
           weights(3,1) = weights(3,1)+coeff*input(j,2)*delta;
        end
   end
   %% Test Section
   NumDataTest  =  10 ;
   test=randi( [0 , 1] , [ NumDataTest , 2]) ...
      +(2*rand(NumDataTest,2)-1)/20;
   for i=1:NumDataTest
       y = bias*weights(1,1)+test(i,1)*weights(2,1)+test(i,2)*weights(3,1);
       out(i) = 1/(1+exp(-y));
   end
    table(test(:,1),test(:,2),out,'VariableNames',{'input1' 'input2' 'output'})

I hope this helps and sorry for my English if it's bad



来源:https://stackoverflow.com/questions/41330397/neural-network-code-explanation

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!