PyTorch深度学习课程--线性模型

线性模型公式:

\[\widehat{y}=x*w(+b) \]

1.函数forword()中,有一个变量w,变量的值来自for循环
2.for循环中,使用np.arange(Numpy中的函数,其作用为:有终点与起点的固定步长的排列)
3.zip()函数的作用:该函数返回一个以元组为元素的列表,其中第 i 个元组包含每个参数序列的第 i 个元素。返回的列表长度被截断为最短的参数序列的长度。
zip()的用法:

import numpy as np
a=[1,2,3,4,5]
b=(1,2,3,4,5)
c=np.arange(5)
d="zhang"
zz=zip(a,b,c,d)
print(zz)

输出:
[(1, 1, 0, 'z'), (2, 2, 1, 'h'), (3, 3, 2, 'a'), (4, 4, 3, 'n'), (5, 5, 4, 'g')]

计算均方误差(Mean Squara Error):

\[cost(w)=\frac{1}{N}\sum_{n=1}^{N}(\widehat{y}_n-y_n)^2 \]

线性模型代码:

import numpy as np
import matplotlib.pyplot as plt

x_data = [1.0, 2.0, 3.0]
y_data = [2.0, 4.0, 6.0]

def forward(x):
    return x*w

def loss(x,y):
    y_pred = forward(x)
    return (y_pred - y)**2

#穷举法

w_list = []
mse_list = []
for w in np.arange(0.0, 4.1, 0.1):
    print("w=", w)
    l_sum = 0
    for x_val, y_val in zip(x_data, y_data):
        y_pred_val = forward(x_val)
        loss_val = loss(x_val, y_val)
        l_sum +=loss_val
        print('\t', x_val, y_val, y_pred_val,loss_val)
    print('MSE=', l_sum/3)
    w_list.append(w)
    mse_list.append(l_sum/3)
plt.plot(w_list, mse_list)
plt.ylabel('loss')
plt.xlabel('w')
plt.show()

image

posted @ 2021-09-26 10:47  遇见要坚强QAQ  阅读(45)  评论(0)    收藏  举报