24小时热门版块排行榜    

查看: 1646  |  回复: 6
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

蓝谙

至尊木虫 (职业作家)

[求助] Python定义函数时显示syntax error

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]))
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

蓝谙

至尊木虫 (职业作家)

引用回帖:
2楼: Originally posted by 那-年 at 2018-09-22 09:33:33
predict函数return部分少个括号

谢谢

发自小木虫IOS客户端
4楼2018-09-22 20:23:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 7 个回答

那-年

捐助贵宾 (正式写手)


jjdg: 金币+1, 感谢参与 2018-09-23 16:03:30
predict函数return部分少个括号

发自小木虫Android客户端
2楼2018-09-22 09:33:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhenter

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by 那-年 at 2018-09-22 09:33:33
predict函数return部分少个括号

火眼金睛

发自小木虫IOS客户端
3楼2018-09-22 19:54:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

那-年

捐助贵宾 (正式写手)

引用回帖:
3楼: Originally posted by zhenter at 2018-09-22 19:54:49
火眼金睛
...

代码写多了就好了

发自小木虫Android客户端
5楼2018-09-23 02:15:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见