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()


浙公网安备 33010602011771号