Tensorflow2(预课程)---1.5、线性回归-非tensorflow方式
一、总结
一句话总结:
对这样的一个节点的神经网络而言,不同的数据的梯度和误差都是所有数据相加,不过误差求求平均即可
# 计算误差 # y = wx + b def compute_error_for_line_given_points(b, w, points): totalError = 0 for i in range(0, len(points)): x = points.iloc[i,1] y = points.iloc[i,2] # 计算每个节点的误差(计算所有节点的误差和) # computer mean-squared-error totalError += (y - (w * x + b)) ** 2 # average loss for each point # 计算平均梯度 return totalError / float(len(points)) def step_gradient(b_current, w_current, points, learningRate): # 梯度初始值 b_gradient = 0 w_gradient = 0 N = float(len(points)) for i in range(0, len(points)): # 对每个节点, x = points.iloc[i, 1] y = points.iloc[i, 2] # 梯度求和,公式里,这个梯度肯定是求和呀 # grad_b = 2(wx+b-y) b_gradient += (2/N) * ((w_current * x + b_current) - y) # grad_w = 2(wx+b-y)*x w_gradient += (2/N) * x * ((w_current * x + b_current) - y) # update w' # 更新w和b new_b = b_current - (learningRate * b_gradient) new_w = w_current - (learningRate * w_gradient) # print("w为{},b为{}".format(new_b,new_w)) # 输出更新的w和b return [new_b, new_w]
二、线性回归-非tensorflow方式
博客对应课程的视频位置: