pytorch-1-linear_regression

linear_regression

  • 实战_梯度下降求解二元一次方程组(线性回归)
    • 1、计算损失
    • 2、计算梯度
    • 3、循环迭代(iterate to optimize)
    • 4、训练
    • 5、结果

实战_梯度下降求解二元一次方程组(线性回归)

1、计算损失

在这里插入图片描述

import numpy as np

# y = wx + b
def compute_error_for_line_given_points(b, w, points):
    totalError = 0
    for i in range(0, len(points)):
        x = points[i, 0]
        y = points[i, 1]
        totalError += (y - (w * x + b)) ** 2
    return totalError / float(len(points))

2、计算梯度

在这里插入图片描述

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[i, 0]
        y = points[i, 1]
        b_gradient += -(2/N) * (y - ((w_current * x) + b_current))
        w_gradient += -(2/N) * x * (y - ((w_current * x) + b_current))
    new_b = b_current - (learningRate * b_gradient)
    new_w = w_current - (learningRate * w_gradient)
    return [new_b, new_w]

3、循环迭代(iterate to optimize)

def gradient_descent_runner(points, starting_b, starting_w, learning_rate, num_iterations):
    b = starting_b
    w = starting_w
    for i in range(num_iterations):
        b, w = step_gradient(b, w, np.array(points), learning_rate)
    return [b, w]

4、训练

def run():
    points = np.genfromtxt("data.csv", delimiter=",")     #使用现成的库函数load进数据文件
    learning_rate = 0.0001
    initial_b = 0 # initial y-intercept guess
    initial_m = 0 # initial slope guess
    num_iterations = 1000
    print("Starting gradient descent at b = {0}, m = {1}, error = {2}"
          .format(initial_b, initial_m,
                  compute_error_for_line_given_points(initial_b, initial_m, points))
          )
    print("Running...")
    [b, m] = gradient_descent_runner(points, initial_b, initial_m, learning_rate, num_iterations)
    print("After {0} iterations b = {1}, m = {2}, error = {3}".
          format(num_iterations, b, m,
                 compute_error_for_line_given_points(b, m, points))
          )

if __name__ == '__main__':
    run()

5、结果

Starting gradient descent at b = 0, m = 0, error = 5565.107834483211
Running…
After 1000 iterations b = 0.08893651993741346, m = 1.4777440851894448, error = 112.61481011613473

你可能感兴趣的:(pytorch突击,python,深度学习,机器学习,人工智能)