基于mindspore的梯度下降实验
基于机器学习实践课程完成的相关使用mindspore深度学习框架完成的任务,写一些分享心得。
数据准备
使用numpy生成数据,之后使用mindspore的tensor进行转换:
x = np.array([55,71,68,87,101,87,75,78,93,73])
y = np.array([91,101,87,109,129,98,95,101,104,93])
x = Tensor(x.astype(np.float32))
y = Tensor(y.astype(np.float32))
复制
解析解
def ols_algebra(x, y):
'''
解析解
'''
n = len(x)
w1 = (n*sum(x*y) - sum(x)*sum(y)) / (n*sum(x*x) - sum(x)*sum(x))
w0 = (sum(x*x)*sum(y) - sum(x)*sum(x*y)) / (n*sum(x*x) - sum(x)*sum(x))
return w1,w0
复制
梯度下降解
def ols_gradient_descent(x,y,lr,num_iter):
'''
梯度下降解
'''
w1 = 0
w0 = 0
for i in range(num_iter):
y_hat = (w1 * x)+ w0
w1_gradient = -2 * sum(x*(y-y_hat))
w0_gradient = -2*sum(y-y_hat)
w1 -