不是一个正式的任务,仅仅是实现一下线性模型,为之后的学习打下基础。
# 导包 import numpy as np import matplotlib.pyplot as plt # 方便嵌入jupyter %matplotlib inline #展示高清图 from matplotlib_inline import backend_inline backend_inline.set_matplotlib_formats('svg') # 准备训练集 x_data=[1.0,2.0,3.0] y_data=[2.0,4.0,6.0] # linear model y=x*w def forward(x): return x*w # loss=(y_hat-y)的平方 def loss(x,y): y_pred=forward(x) return (y_pred-y)*(y_pred-y) # List w_list save the weights w. # List mse_list save the cost values of each ω. # mse 是均方误差 w_list=[] mse_list=[] # 我们事先对 w 的值做一个猜想,在猜想范围内以0.1为步长取值 for w in np.arange(0.0,4.1,0.1): print('w=',w) # 日历,便于看清 l_sum=0 # 储存loss的和值 # zip(x_data, y_data)函数会返回一个迭代器,它产生x_data和 y_data中对应的元素对。 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 的值添加到列表 w_list 的末尾 用append函数 w_list.append(w) mse_list.append(l_sum/3) Fig1=plt.figure() plt.plot(w_list,mse_list) plt.ylabel('Loss') plt.xlabel('w') # 在pycharm中必须使用plt.show才能看见视图 plt.show