学习内容:B站 刘二大人 《pytorch深度学习实践》课程系列
模型:y=w*x (为了简便,去掉了偏置b)
数据:
x_data | y_data |
---|---|
1.0 | 2.0 |
2.0 | 4.0 |
3.0 | 6.0 |
4.0 | ? |
问题:如何使用线性模型y = w*x 来预测x_data = 4.0 时 , y_data的值???
解决思路:
在一定空间内搜索w的值,使得目标函数cost最小!!!
本讲暂时没有采用pytorch的代码,而是使用简单的逻辑代码解决。它是将w限定在一个范围内,采用枚举的方法遍历w,每一个wi,对应一个model :y = wi*x , 这样对应一个预测值 y_hat。y_hat与真实标签y之间的差值作为误差,为了使误差都大于零,改用(y_hat - y)^2。实际过程中使用MSE作为目标函数,来评估模型的好坏,MSE越小,模型越好。
MSE - - Mean Square Error("均方误差")
代码:
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)
#画Loss-w图
plt.plot(w_list,mse_list)
plt.xlabel('w')
plt.ylabel('Loss')
plt.show()
损失函数随着w权重的变化曲线,如下图:
小结:这种方式,只是一个入门过渡,以后的代码不这样写!
真的忍不住说一下,这个课真的很不错,适合入门,笔记是回来写的,但是视频中教的内容毕竟有限,还需要自己多去涉猎涉猎!