pytorch深度学习入门 第2讲(线性模型)

学习内容:B站 刘二大人 《pytorch深度学习实践》课程系列
 

模型:y=w*x  (为了简便,去掉了偏置b)

数据:

x_datay_data
1.02.0
2.04.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权重的变化曲线,如下图:

小结:这种方式,只是一个入门过渡,以后的代码不这样写! 

真的忍不住说一下,这个课真的很不错,适合入门,笔记是回来写的,但是视频中教的内容毕竟有限,还需要自己多去涉猎涉猎!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值