pytorch实现线性回归以及多元回归

PyTorch实现线性回归以及多元回归

在本文中,我们将介绍如何使用PyTorch实现线性回归和多元回归。我们将提供两个示例,一个是线性回归,另一个是多元回归。

示例1:线性回归

以下是使用PyTorch实现线性回归的示例代码:

import torch
import torch.nn as nn
import numpy as np
import matplotlib.pyplot as plt

# Generate random data
np.random.seed(0)
x = np.random.rand(100, 1)
y = 2 + 3 * x + np.random.rand(100, 1)

# Convert data to tensors
inputs = torch.from_numpy(x).float()
targets = torch.from_numpy(y).float()

# Define linear regression model
model = nn.Linear(1, 1)

# Define loss function
criterion = nn.MSELoss()

# Define optimizer
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)

# Train the model
num_epochs = 1000
for epoch in range(num_epochs):
    # Forward pass
    outputs = model(inputs)
    loss = criterion(outputs, targets)

    # Backward and optimize
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()

    # Print progress
    if (epoch+1) % 100 == 0:
        print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, num_epochs, loss.item()))

# Plot the results
predicted = model(inputs).detach().numpy()
plt.plot(x, y, 'ro', label='Original data')
plt.plot(x, predicted, label='Fitted line')
plt.legend()
plt.show()

在这个示例中,我们首先生成了一些随机数据。然后,我们将数据转换为PyTorch张量,并定义了一个名为model的线性回归模型。接下来,我们定义了损失函数和优化器,并使用它们训练模型。最后,我们绘制了原始数据和拟合线。

示例2:多元回归

以下是使用PyTorch实现多元回归的示例代码:

import torch
import torch.nn as nn
import numpy as np

# Generate random data
np.random.seed(0)
x = np.random.rand(100, 3)
y = 2 + 3 * x[:,0:1] + 4 * x[:,1:2] + 5 * x[:,2:3] + np.random.rand(100, 1)

# Convert data to tensors
inputs = torch.from_numpy(x).float()
targets = torch.from_numpy(y).float()

# Define linear regression model
model = nn.Linear(3, 1)

# Define loss function
criterion = nn.MSELoss()

# Define optimizer
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)

# Train the model
num_epochs = 1000
for epoch in range(num_epochs):
    # Forward pass
    outputs = model(inputs)
    loss = criterion(outputs, targets)

    # Backward and optimize
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()

    # Print progress
    if (epoch+1) % 100 == 0:
        print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, num_epochs, loss.item()))

# Print the learned coefficients
print('Learned coefficients:')
for name, param in model.named_parameters():
    if param.requires_grad:
        print(name, param.data)

在这个示例中,我们首先生成了一些随机数据。然后,我们将数据转换为PyTorch张量,并定义了一个名为model的多元回归模型。接下来,我们定义了损失函数和优化器,并使用它们训练模型。最后,我们打印了学习到的系数。

总结

在本文中,我们介绍了如何使用PyTorch实现线性回归和多元回归,并提供了两个示例说明。这些技术对于在深度学习模型中使用回归非常有用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:pytorch实现线性回归以及多元回归 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • pytorch autograd backward函数中 retain_graph参数的作用,简单例子分析,以及create_graph参数的作用

    retain_graph参数的作用 官方定义: retain_graph (bool, optional) – If False, the graph used to compute the grad will be freed. Note that in nearly all cases setting this option to True is not…

    PyTorch 2023年4月8日
    00
  • Pytorch自动求导函数详解流程以及与TensorFlow搭建网络的对比

    以下是“PyTorch自动求导函数详解流程以及与TensorFlow搭建网络的对比”的完整攻略,包含两个示例说明。 PyTorch自动求导函数详解流程 PyTorch是一个基于Python的科学计算库,它提供了强大的GPU加速支持和自动求导机制。在PyTorch中,我们可以使用自动求导函数来计算梯度,从而实现反向传播算法。下面是PyTorch自动求导函数的详…

    PyTorch 2023年5月15日
    00
  • Python计算图片数据集的均值方差示例详解

    当我们使用深度学习模型进行图像分类、目标检测等任务时,通常需要对图像数据集进行预处理,其中包括对图像数据集进行归一化处理。而归一化处理的第一步就是计算图像数据集的均值和方差。本文将详细讲解如何使用Python计算图像数据集的均值和方差,并提供两个示例说明。 计算图像数据集的均值和方差 计算图像数据集的均值和方差的过程分为两步:首先需要将图像数据集转换为num…

    PyTorch 2023年5月15日
    00
  • 7月3日云栖精选夜读:强大的PyTorch:10分钟让你了解深度学习领域新流行的框架

    摘要: 今年一月份开源的PyTorch,因为它强大的功能,它现在已经成为深度学习领域新流行框架,它的强大源于它内部有很多内置的库。本文就着重介绍了其中几种有特色的库,它们能够帮你在深度学习领域更上一层楼。 热点热议 惊心动魄!程序员们说这些时刻再也不想经历了 作者:程序猿和媛 Java 的最 今年一月份开源的PyTorch,因为它强大的功能,它现在已经成为深…

    2023年4月8日
    00
  • Pytorch出现 raise NotImplementedError

    ————————————————————————— NotImplementedError Traceback (most recent call last) <ipython-input-32-aa392119100c> in <modul…

    PyTorch 2023年4月6日
    00
  • pytorch使用过程中遇到的一些问题

    问题一 ImportError: No module named torchvision torchvison:图片、视频数据和深度学习模型 解决方案 安装torchvision,参照官网 问题二 安装torchvision过程中遇到 Could not find a version that satisfies the requirement olefil…

    PyTorch 2023年4月8日
    00
  • pytorch SENet实现案例

    SENet是一种用于图像分类的深度神经网络,它通过引入Squeeze-and-Excitation模块来增强模型的表达能力。本文将深入浅析PyTorch中SENet的实现方法,并提供两个示例说明。 1. PyTorch中SENet的实现方法 PyTorch中SENet的实现方法如下: import torch.nn as nn import torch.nn…

    PyTorch 2023年5月15日
    00
  • PyTorch LSTM,batch_first=True对初始化h0和c0的影响

    batch_first=True会对LSTM的输入输出的维度顺序有影响,但是对初始化h0和c0的维度顺序没有影响,也就是说,不管batch_first=True还是False,h0和c0的维度顺序都是:     关于LSTM的输入输出,可参考这篇博客。  

    2023年4月7日
    00
合作推广
合作推广
分享本页
返回顶部