【PyTorch】课堂测试一:线性回归的求解

这篇具有很好参考价值的文章主要介绍了【PyTorch】课堂测试一:线性回归的求解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作者🕵️‍♂️:让机器理解语言か

专栏🎇:PyTorch

描述🎨:PyTorch 是一个基于 Torch 的 Python 开源机器学习库。

寄语💓:🐾没有白走的路,每一步都算数!🐾 

【PyTorch】课堂测试一:线性回归的求解

介绍💬

        这个是我们的第一次课堂测试,共有四个挑战,本测试需要你利用前面所学到的 PyTorch 知识,完成线性回归问题的求解,时间为30min。(文末附有参考答案,请大家认真作答再自行校对!)

知识点📜

  • 损失的定义
  • 优化器的定义
  • 模型的训练

线性回归的求解

        首先,让我们来模拟一下,线性回归所需的数据集合:

import numpy as np
from sklearn import datasets
import matplotlib.pyplot as plt
%matplotlib inline

X_numpy, y_numpy = datasets.make_regression(
    n_samples=100, n_features=1, noise=20, random_state=4)
plt.plot(X_numpy, y_numpy, 'ro')

        如上,我们初始化了一个数据集合。从图中可以看出,该数据集合大致上呈线性分布。

本挑战的目的就寻找一个良好的函数表达式(又叫做模型),该函数表达式能够很好的描述上面数据点的分布,即对上面数据点进行拟合。

        在使用 PyTorch 求解模型之前,我们需要将上面的数据集转为 PyTorch 认识的张量。

🚩挑战①:将 X_numpy,y_numpy 转为张量 。

📝要求转换后的张量用 X,y 表示。

🔔提示需要利用 tensor.view() 将 y 的维度转 为 2 维。

import torch
import torch.nn as nn

# 编写代码处


# 测试代码
X.size(), y.size()

重要说明

        本课程中,你需要自行补充上方单元格中缺失的代码并运行,如果输出结果和下方的期望输出结果一致,即代表此挑战顺利通过。完成全部内容后,点击「提交检测」即可通过,此说明后续不再出现。

 ✅ 期望输出

(torch.Size([100, 1]), torch.Size([100, 1]))

根据上面图像中数据点的分布情况,我们可以看出,该问题的解决模型应该是一个线性函数模型。接下来让我们使用 PyTorch 来初始化这个线性模型。

🚩 挑战②:线性函数模型的定义 。

📝 要求 :用 model 变量表示线性函数模型。

### 补充代码 ###


# 测试代码
model

期望输出

Linear(in_features=1, out_features=1, bias=True)

定义完模型后,接下来,让我们来定义学习率、损失函数和优化器。

🚩 挑战③:利用 PyTorch 定义学习率、损失函数和优化器 。

📝 要求 :损失采用均方差损失,学习率取 0.01 。

### 补充代码 ###


# 测试代码
optimizer

 期望输出

SGD (
Parameter Group 0
    dampening: 0
    lr: 0.01
    momentum: 0
    nesterov: False
    weight_decay: 0
)

        最后让我们进行模型的训练,即将数据传入模型中,然后利用梯度下降算法不断的迭代,找到最佳的模型。

🚩 挑战④:利用 PyTorch 训练线性模型 。

📝 提示 :可以循环迭代 100 次左右 。

### 补充代码 ###


# 测试代码:将通过模型预测出来的值展示到图像中
# 预测结果并转为 NumPy 的形式
predicted = model(X).detach().numpy()

plt.plot(X_numpy, y_numpy, 'ro')
plt.plot(X_numpy, predicted, 'b')
plt.show()

【PyTorch】课堂测试一:线性回归的求解

参考答案

本挑战的参考答案如下:

挑战 1 的参考答案

X = torch.from_numpy(X_numpy.astype(np.float32))
y = torch.from_numpy(y_numpy.astype(np.float32))
y = y.view(y.shape[0], 1)

挑战 2 的参考答案

n_samples, n_features = X.shape
input_size = n_features
output_size = 1
model = nn.Linear(input_size, output_size)

挑战 3 的参考答案

learning_rate = 0.01
criterion = nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate) 

挑战 4 的参考答案

num_epochs = 100
for epoch in range(num_epochs):
    # Forward pass and loss
    y_predicted = model(X)
    loss = criterion(y_predicted, y) 
    # Backward pass and update
    loss.backward()
    optimizer.step()
    # zero grad before new step
    optimizer.zero_grad()
    if (epoch+1) % 10 == 0:
        print(f'epoch: {epoch+1}, loss = {loss.item():.4f}')

实验总结

        通过对线性问题的求解,我想你已经了解了如何利用 PyTorch 训练模型的整个过程。当然,本次挑战只是利用梯度下降算法进行了简单的线性回归。在下一个实验中,我们会尝试使用该算法进行非线性问题的求解。文章来源地址https://www.toymoban.com/news/detail-416479.html

到了这里,关于【PyTorch】课堂测试一:线性回归的求解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 用Pytorch实现线性回归模型

    前面已经学习过线性模型相关的内容,实现线性模型的过程并没有使用到Pytorch。 这节课主要是利用Pytorch实现线性模型。 学习器训练: 确定模型(函数) 定义损失函数 优化器优化(SGD) 之前用过Pytorch的Tensor进行Forward、Backward计算。 现在利用Pytorch框架来实现。 准备数据集

    2024年01月19日
    浏览(49)
  • 深度学习之pytorch实现线性回归

    作用j进行线性变换 Linear(1, 1) : 表示一维输入,一维输出 优化器对象 9961 tensor(4.0927e-12, grad_fn=) 9962 tensor(4.0927e-12, grad_fn=) 9963 tensor(4.0927e-12, grad_fn=) 9964 tensor(4.0927e-12, grad_fn=) 9965 tensor(4.0927e-12, grad_fn=) 9966 tensor(4.0927e-12, grad_fn=) 9967 tensor(4.0927e-12, grad_fn=) 9968 tensor(4.0927e-12, grad_fn

    2024年02月19日
    浏览(35)
  • 深度学习之用PyTorch实现线性回归

    1.1 epoch = 100时 1.2 epoch = 1000时   2.1 Adam优化器    2.2 Adamax优化器  3.1 lr = 0.05  3.2 lr = 0.1(loss函数结果发散) 1.1 问题  1.2 解决办法 代码中model.parameters()函数保存的是Weights和Bais参数的值。但是对于其他网络(非线性)来说这个函数可以用吗,里面也是保存的w和b吗?

    2024年02月14日
    浏览(45)
  • 33- PyTorch实现分类和线性回归 (PyTorch系列) (深度学习)

    知识要点  pytorch 最常见的创建模型 的方式, 子类 读取数据: data = pd.read_csv (\\\'./dataset/credit-a.csv\\\', header=None) 数据转换为tensor: X = torch .from_numpy(X.values).type(torch.FloatTensor) 创建简单模型: 定义损失函数: loss_fn = nn.BCELoss () 定义优化器: opt = torch.optim.SGD (model.parameters(), lr=0.00001) 把梯度

    2024年02月06日
    浏览(47)
  • pytorch手动实现一个简单的线性回归

    使用y = 5x + 20来构造数据 准备数据 计算预测值 计算损失 把参数的梯度置为0 进行反向传播 更新参数

    2024年02月16日
    浏览(44)
  • PyTorch深度学习实战 | 预测工资——线性回归

    通过员工工作年限与工资的对应关系表,找出二者之间的关系,并预测在指定的年限时,工资会有多少。 通过员工工作年限与工资的对应关系表,找出二者之间的关系,并预测在指定的年限时,工资会有多少。 可以看出,这是一个用工作年限预

    2023年04月11日
    浏览(45)
  • 线性神经网路——线性回归随笔【深度学习】【PyTorch】【d2l】

    线性回归是显式解,深度学习中绝大多数遇到的都是隐式解。 3.1.1、PyTorch 从零实现线性回归 生成数据集及标签 d2l.plt.scatter(,,) ,使用d2l库中的绘图函数来创建散点图。 这个函数接受三个参数: features[:,1].detach().numpy() 是一个二维张量features的切片操作,选择了所有行的第二

    2024年02月15日
    浏览(57)
  • 【pytorch】使用pytorch构建线性回归模型-了解计算图和自动梯度

    在 PyTorch 中,计算图(Computational Graph)是一种用于表示神经网络运算的数据结构。每个节点代表一个操作,例如加法、乘法或激活函数,而边则代表这些操作之间的数据流动。 计算图的主要优点是可以自动进行微分计算。当你在计算图上调用 .backward() 方法时,PyTorch 会自动

    2024年01月16日
    浏览(45)
  • 【AI】《动手学-深度学习-PyTorch版》笔记(八):线性回归

    线性函数如下: y ^ = w 1 x 1 + . . . + w d x d

    2024年02月14日
    浏览(48)
  • pytorch的卷积层池化层和非线性变化 和机器学习线性回归

    卷积层:   两个输出的情况 就会有两个通道 可以改变通道数的 最简单的神经网络结构: nn.Mudule就是继承父类 super执行的是 先执行父类函数里面的 forward执行的就是前向网络,就是往前推进的,当然也有反向转播,那就是用来就gradient dicent了,求导计算了。 卷积后的结果展

    2024年02月07日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包