微信扫一扫打赏支持

Tensorflow2(预课程)---1.5、线性回归-非tensorflow方式

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方式

博客对应课程的视频位置:

 

 

 
posted @ 2020-08-26 01:56  范仁义  阅读(167)  评论(0编辑  收藏  举报