def train(self,labels,iteration,rate,input_vecs):
for i in range(iteration):
self._one_iteration(input_vecs,labels,rate)
上述代码的第一行显示有错:
runfile('D:/Data_Rabbit/code/myself/DL/Perceptron.py', wdir='D:/Data_Rabbit/code/myself/DL')
File "D:/Data_Rabbit/code/myself/DL/Perceptron.py", line 19
def train(self,labels,iteration,rate,input_vecs):
^
SyntaxError: invalid syntax
找了半天,实在看不出来哪里错了,恳请大家指点一下!
下面是全部代码:
from functools import reduce
import numpy as np
class Perceptron(object):
def __init__(self,input_num,activator):
self.input_num=input_num
self.activator=activator
self.weights=np.zeros(input_num)
self.bias=0.0
def __str__(self):
return('weights:\t%f\nbias:\t%f')%self.weights,self.bias
def predict(self,input_vec):
return self.activator(
sum(np.array(self.weights)*np.array(input_vec)+self.bias
)
def train(self,labels,iteration,rate,input_vecs):
for i in range(iteration):
self._one_iteration(input_vecs,labels,rate)
def _one_iteration(self,input_vecs,labels,rate):
samples=zip(input_vecs,labels)
for (input_vec,label) in samples:
self._update_weight(input_vec,label,rate)
def _update_weight(self,input_vec,label,rate):
output=self.predict(input_vec)
delta=label-output
self.weights=self.weights+rate*delta*input_vec
self.weights=lambda w,x: w+rate*delta*x,zip(
self.weights,input_vec
)
self.bias+=rate*delta
def f(x):
if x>0:
return (1)
else:
return (0)
p=Perceptron(2,f)
input_vecs=np.array([[0,0],[0,1],[1,0],[1,1]])
labels=[0,0,0,1]
p.train(labels,10,0.1,input_vecs)
print(p.weights)
print(p.predict([0,0]))
print(p.predict([0,1]))
print(p.predict([1,0]))
print(p.predict([1,1])) |