我是机器学习的新手,我试图在numpy中实现SGD来优化单变量线性回归,但它找不到最优的参数。
def sgd(alpha,x,y,params,epochs):
m = len(x)
cost_history = []
for i in range(0,epochs):
for xi,yi in zip(x,y):
error = (params @ xi) -yi
grad0 = error * xi[0]
grad1 = error * xi[1]
params[0] = params[0] - alpha *grad0
params[1] = params[1] - alpha * grad1
cost_history.append(cost_func(params,x,y))
return params,cost_history
sgd_params,sgd_cost_hist = sgd(0.001,designX,y,np.array([3,2]),5)发布于 2020-07-27 12:49:46
看起来你的参数被定义为一个整数。再试一次
sgd_params,sgd_cost_hist = sgd(0.001,designX,y,np.array([3.0,2.0]),5)以下是该问题的快速演示。
b = np.array([3, 2])
print(b, b.dtype)
b[0] = b[0] + 0.1
print(b, b.dtype)
b[0] = b[0] + 1.2
print(b, b.dtype)获取:
[3 2] int64
[3 2] int64
[4 2] int64该值保持为整数。由于学习率的原因,增量的绝对值往往低于1,因此该参数不会更新。
https://stackoverflow.com/questions/63108656
复制相似问题