📅  最后修改于: 2020-11-11 00:38:50             🧑  作者: Mango
在此,我们简要介绍了如何实现基于机器学习的算法,以训练线性模型来拟合一组数据点。
为此,无需具备任何深度学习的先验知识。我们将从讨论监督学习开始。我们将讨论监督学习的概念及其与之的关系。
机器学习是AI的一种应用。机器学习(ML)使系统能够借助经验自动学习和改进。 ML专注于计算机程序的开发,该程序可以访问数据并将其用于自身学习。
学习的过程始于数据或观察,例如示例,说明或直接经验,以便根据我们提供的示例查找数据模式并在将来做出更好的决策。其目的是允许计算机在没有人工干预的情况下自动学习,并相应地调整操作。
顾名思义,主管是在担任教师。在监督学习中,我们使用标记良好的数据来训练或教导机器。标记正确的意味着几乎没有数据已被正确答案标记。之后,机器将获得一组新的数据。监督学习算法会分析训练数据并从标记的数据中产生正确的结果。
监督学习分为两大类算法:
在无监督学习中,机器会使用既未分类也未标记的信息进行训练,并允许算法在没有指导的情况下对信息进行操作。在无监督学习中,任务是根据相似性,差异和模式对未分类的信息进行分组,而无需事先对数据进行训练。
没有主管,这意味着不会对机器进行培训。因此,机器仅限于自行查找隐藏的结构。
无监督学习分为两大类算法:
进行预测是建立线性回归模型的第一步。在线性回归模型中,我们使用监督学习,因为回归是其第二大类。因此,对学习者进行了培训,并利用了与标记特征相关联的数据集,这些特征定义了我们训练数据的含义。
学习者能够在将新输入的数据提供给机器之前预测相应的输出。
让我们看一个例子,以了解如何在线性回归中进行预测。
对于单个数据
import torch
b=torch.tensor(3.0,requires_grad=True)
c=torch.tensor(1.0,requires_grad=True)
def forward(x):
y=b*x+c
return y
x=torch.tensor([4.0])
forward(x)
输出:
tensor([13.], grad_fn=)
对于多个数据
import torch
b=torch.tensor(3.0,requires_grad=True)
c=torch.tensor(1.0,requires_grad=True)
def forward(x):
y=b*x+c
return y
x=torch.tensor([[4.0],[5.0],[6.0]])
forward(x)
输出:
tensor([[13.],
[16.],
[19.]], grad_fn=)
绑定预测还有另一种标准方法。为此,我们必须导入torch.nn包的线性类。在此,我们使用manual_seed()方法生成随机数。当我们使用线性类创建模型时,将为线性类提供随机数值,这自召回以来就很有意义。
让我们看一个如何使用model和manual_seed()方法进行预测的示例。
对于单个数据
import torch
from torch.nn import Linear
torch.manual_seed(1)
model=Linear(in_features=1,out_features=1)
print(model.bias,model.weight)
x=torch.tensor([2.0])
print(model(x))
输出:
Parameter containing:
tensor([-0.4414], requires_grad=True) Parameter containing:
tensor([[0.5153]], requires_grad=True)
tensor([0.5891], grad_fn=)
对于多个数据
import torch
from torch.nn import Linear
torch.manual_seed(1)
model=Linear(in_features=1,out_features=1)
print(model.bias,model.weight)
x=torch.tensor([[2.0],[4.0],[6.0]])
print(model(x))
输出:
Parameter containing:
tensor([-0.4414], requires_grad=True) Parameter containing:
tensor([[0.5153]], requires_grad=True)
tensor([[0.5891],
[1.6197],
[2.6502]], grad_fn=)