Pytorch线性模型(Linear Model)

2024-05-29 1062阅读

基本步骤

①首先准备好数据集(DataSet)

②模型的选择或者设计(Model)

③进行训练(Train)大部分模型都需要训练,有些不需要。这一步后我们会确定不同特征的权重

④推理(inferring)

Pytorch线性模型(Linear Model)

1,2,3hours会有一个结果2,4,6points。这个就是训练过程,把x和y都给模型,让他自己学。5hours这个没有一个对应的y,这个就是我们的预测过程(相当于上面的题目学完了后,现在写这个题,看能不能写对)。

对应的就是下图,表格中的就是DataSet,给机器学习后,传入4hours(Input)最后得到一个预测结果Output。

数据集DataSet

当然,其实在训练表中这个4hours其实可以为testSet测试集。在训练过程中这个对应的y看不见(引用我一位师兄的话,这个其实就是小测验,最后需要我们预测的那个过程才是期末考试)。因为不能训练完就直接用,因为这个太不够准确,需要test进行测试。

Pytorch线性模型(Linear Model)

所以我们通常在训练的过程中,通常不会把我们所有的DataSet全部设置为训练集,还有一部分设测试集。

接下来有一个很大的问题就是数据集,如果我们给定的数据集很片面,不够完全,我们可能在训练后出现过拟合的现象(只认识这些训练的内容),我们希望最终可以有一个比较泛化的能力,在遇到没见过的图也可以识别我们学习的内容(也就是我们学习时常说的掌握方法,举一反三)。

设计模型(Design Model)

什么是一个比较好的模型?

先用线性模型先试试,因为这个比较基本且简单。如果效果不好再换其他模型。对于我们上面表格中的几个数据,我们看出,其实比较符合线性的规则。

Pytorch线性模型(Linear Model)

上面这条线是我们真实值的线。

 Pytorch线性模型(Linear Model)由于我们给的数据比较简单,但是现实是很少会出现这样的情况的。所以通常来说会线随机预测一个w(权重weight),然后通过在1,2,3hours对应的points与真实值进行对比,evaluate Model Error 。我们就把这个评估模型称为损失loss。

如果我们现在假设这个w为3,按照我们loss的公式。  分别计算出loss值,最后测得平均的loss值。

Pytorch线性模型(Linear Model)当然你也可以假设不同的w,看看哪一种的loss最小。

Pytorch线性模型(Linear Model)

这个是两个可能会使用的公式。

Pytorch线性模型(Linear Model)通过计算得到这样的结果,当然通常很难算出0这个值,所以在找w的时候可以使用穷举法。也就是如下图,把在0-4之间的每个值都算一下,找到最小的loss。

Pytorch线性模型(Linear Model)但是我们无法在实数域中把所有的值都找出来,所以实现上图采用的代码如下。 

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 forword(x):
    return x*w
def loss(x,y):
    y_pred = forword(x)
    return (y_pred-y)*(y_pred-y)
w_list = []
mse_lis = []
for w in np.arange(0.0,4.0,0.1):
    print('w',w)
    l_sum = 0
    for x_val,y_val in zip(x_data,y_data):
        y_pred_val = forword(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_lis.append(l_sum/3)

运行结果为:

Pytorch线性模型(Linear Model) 画图:

plt.plot(w_list,mse_lis)
plt.ylabel('Lose')
plt.xlabel('W')
plt.show

 Pytorch线性模型(Linear Model)

但是这里需要提一下,通常我们的横坐标不是w,我们训练通常让横坐标为epoch(训练几轮)

下面这张图是昨天刚训练完的一个结果,注意在训练过程中一定要注意存盘,因为往往训练时间很长,如果出错就要重新训练,所以我们要记住定时存盘。还有要注意可视化问题,希望在训练过程中得到的结果可视化出来,让我们更好去判断结果。

Pytorch线性模型(Linear Model)

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]