2016-12-27 10 views
-2

Что такое гиперплоскость в обсуждении нейронных сетей и персетронов?Гиперплана в персептронах

Следующий персептрон реализован с использованием гиперплоскости.

perceptron_minin.m (октава)

function [errors, sepplane ] = perceptron_minin (pclass , nclass) 
    sepplane = rand (1 , columns (pclass) + 1) - 0.5; 
    tset = [ones(rows(pclass), 1), pclass ; -ones(rows(nclass), 1), -nclass]; 
    i = 1; 
    do 
     misind = tset * sepplane' < 0; 

     correction = sum (tset (misind , :), 1)/sqrt (i); 

     sepplane = sepplane + correction; 

     ++i; 
    until (norm(sepplane) * 0.0005) - norm(correction) > 0 || i > 1000); 

    errors = mean(tset * sepplane' < 0); 
    dzeros = tvec(tlab == 1 , :); 
    dones = tvec(tlab == 2 , :); 
    perceptron(dzeros, dones) 
end 

Но, в следующей программе, логика разработана без использования гиперплоскости.

perceptron_test.m (MATLAB)

bias = -1; 
coeff = 0.7; 
rand('state', sum(100 * clock)); 
weights = -1*2 .* rand(3,1); 

train_iter = 10000; 
train_data_count = 4; 
test_data_count = 100; 

%% training section 

train_data = [ 0 0; 
       0 1; 
       1 0; 
       1 1]; 

class_labels = [0; 
       1; 
       1; 
       1]; 

bias_vector(1:train_data_count, 1) = bias; 

train_data_biased = [bias_vector, train_data]; 

for i=1:train_iter 
    output = zeros(train_data_count,1); 
    for j=1:train_data_count 
     y = product(train_data_biased(j,:), weights); 

     output(j) = activ_func(y); 

     delta = class_labels(j) - output(j); 

     inc = train_data_biased(j,:) * (coeff * delta); 

     weights = weights + inc'; 
    end 
end 

table(train_data(:,1), train_data(:,2), output, 'VariableNames', {'A' 'B' 'A_xor_B'}) 


%% test Section 

test_data = randi([0 , 1], [test_data_count, 2]) + 
      (2 * rand(test_data_count,2) - 1)/20; 

for i=1:test_data_count 
    y = bias*weights(1,1)+... 
     test_data(i,1)*weights(2,1)+... 
     test_data(i,2)*weights(3,1); 
    output(i) = 1/(1+exp(-y)); 
end 

table(test_data(:,1),test_data(:,2), output, 
     'VariableNames',{'A' 'B' 'A_xor_B'}) 

Теперь у меня есть несколько вопросов,

(1) Является ли исходный код первого правильно?

(2) Если ДА, Объясните, почему они оба работают.

+0

Какой * что * является гиперплоскостью? –

+0

@ScottHunter, 'sepplane' на самом деле является гиперплоскостью. Где эта логика используется в первом исходном коде? – anonymous

ответ

0

Вес не является синонимом для гиперплоскости, но они связаны друг с другом: гиперплоскость определяется значениями весов.

+0

Plz, см. Редактирование. – anonymous

 Смежные вопросы

  • Нет связанных вопросов^_^