퍼셉트론 알고리즘을 구현하려고하지만 일관성없는 결과가 나타납니다. 나는 무게의 초기화가 큰 영향을 끼치고 있음을 알아 챘다. 내가 뻔뻔스럽게 잘못하고있는 것이 있습니까? 감사!퍼셉트론 알고리즘의 일관성없는 결과
import numpy as np
def train(x,y):
lenWeights = len(x[1,:]);
weights = np.random.uniform(-1,1,size=lenWeights)
bias = np.random.uniform(-1,1);
learningRate = 0.01;
t = 1;
converged = False;
# Perceptron Algorithm
while not converged and t < 100000:
targets = [];
for i in range(len(x)):
# Calculate output of the network
output = (np.dot(x[i,:],weights)) + bias;
# Perceptron threshold decision
if (output > 0):
target = 1;
else:
target = 0;
# Calculate error and update weights
error = target - y[i];
weights = weights + (x[i,:] * (learningRate * error));
bias = bias + (learningRate * error);
targets.append(target);
t = t + 1;
if (list(y) == list(targets)) == True:
converged = True;
return weights,bias
def test(weights, bias, x):
predictions = [];
for i in range(len(x)):
# Calculate w'x + b
output = (np.dot(x[i,:],weights)) + bias;
# Get decision from hardlim function
if (output > 0):
target = 1;
else:
target = 0;
predictions.append(target);
return predictions
if __name__ == '__main__':
# Simple Test
x = np.array([ [0,1], [1,1] ]);
y = np.array([ 0, 1 ]);
weights,bias = train(x,y);
predictions = test(weights,bias,x);
print predictions
print y
어떤 방식으로 결과가 일치하지 않습니까? 당신이 발견 한 가중치에 대한 의존도는 무엇입니까? 나는'while'에도 들여 쓰기 오류가 있다고 생각합니다. – Nabla
때로는 정확한 레이블을 출력하지만 때로는 그렇지 않습니다. 임의 선택입니다. – rahulm