import numpy as np
def sigmoid(x):
return 1/(1+np.exp(-x))
def train():
#设定参数值
m=train_x.shape[1]
learning_rate=0.01
iteration_nums=10000
input_dim=train_x.shape[0]
#初始化参数
b=0
w=np.zeros(shape=(input_dim,1))
for i in range(iteration_nums):
#前向计算损失(交叉熵函数)
res=sigmoid(np.dot(w.T,train_x)+b)
cost=-1/m*np.sum(train_y*np.log(res)+(1-train_y)*np.log(1-res))
print("cost after iteration %i:%f" % (i, cost))
#后向迭代更新参数
dw=np.dot((res-train_y).T,train_x)/m
db=np.sum(res-train_y)/m
w=w-dw*learning_rate
b=b-db*learning_rate
return w,b
def predict():
train()
test_y=sigmoid(np.dot(w.T,test_x)+b)
return test_y
EP1.numpy实现感知机
最新推荐文章于 2024-06-11 15:57:39 发布