人工智能学习Pytorch教程Tensor基本操作示例详解

人工智能学习Pytorch教程Tensor基本操作示例详解

本教程主要介绍了如何使用PyTorch中的Tensor进行基本操作,包括创建Tensor、访问Tensor和操作Tensor。同时,本教程还提供了两个示例,分别是使用Tensor进行线性回归和卷积操作。

创建Tensor

在PyTorch中,我们可以使用torch.Tensor()函数来创建一个Tensor。例如,我们可以使用以下代码创建一个2x3的Tensor:

import torch

x = torch.Tensor([[1, 2, 3], [4, 5, 6]])
print(x)

输出:

tensor([[1., 2., 3.],
        [4., 5., 6.]])

我们还可以使用其他函数来创建Tensor,例如:

  • torch.zeros():创建一个全为0的Tensor
  • torch.ones():创建一个全为1的Tensor
  • torch.rand():创建一个随机初始化的Tensor

例如,我们可以使用以下代码创建一个3x3的全为0的Tensor:

import torch

x = torch.zeros(3, 3)
print(x)

输出:

tensor([[0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.]])

访问Tensor

我们可以使用索引来访问Tensor中的元素。例如,我们可以使用以下代码访问Tensor中的第一个元素:

import torch

x = torch.Tensor([[1, 2, 3], [4, 5, 6]])
print(x[0][0])

输出:

tensor(1.)

我们还可以使用切片来访问Tensor中的子集。例如,我们可以使用以下代码访问Tensor中的第一行:

import torch

x = torch.Tensor([[1, 2, 3], [4, 5, 6]])
print(x[0, :])

输出:

tensor([1., 2., 3.])

操作Tensor

在PyTorch中,我们可以使用各种函数来操作Tensor。例如,我们可以使用以下代码将两个Tensor相加:

import torch

x = torch.Tensor([[1, 2, 3], [4, 5, 6]])
y = torch.Tensor([[7, 8, 9], [10, 11, 12]])
z = x + y
print(z)

输出:

tensor([[ 8., 10., 12.],
        [14., 16., 18.]])

我们还可以使用其他函数来操作Tensor,例如:

  • torch.sum():计算Tensor中所有元素的和
  • torch.mean():计算Tensor中所有元素的平均值
  • torch.max():计算Tensor中所有元素的最大值
  • torch.min():计算Tensor中所有元素的最小值

例如,我们可以使用以下代码计算Tensor中所有元素的和:

import torch

x = torch.Tensor([[1, 2, 3], [4, 5, 6]])
print(torch.sum(x))

输出:

tensor(21.)

示例1:使用Tensor进行线性回归

在这个示例中,我们将使用Tensor来实现一个简单的线性回归模型。我们将使用以下公式来拟合一个线性函数:

y = 2x + 1

我们将使用随机生成的数据来训练模型,并使用梯度下降算法来更新模型参数。

import torch

# 生成随机数据
x = torch.randn(100, 1) * 10
y = x * 2 + 1 + torch.randn(100, 1)

# 定义模型
w = torch.randn(1, 1, requires_grad=True)
b = torch.randn(1, 1, requires_grad=True)

# 定义损失函数和优化器
criterion = torch.nn.MSELoss()
optimizer = torch.optim.SGD([w, b], lr=0.01)

# 进行模型训练
for epoch in range(1000):
    # 前向传播
    y_pred = x.mm(w) + b

    # 计算损失
    loss = criterion(y_pred, y)

    # 反向传播
    loss.backward()

    # 更新模型参数
    optimizer.step()
    optimizer.zero_grad()

    # 打印训练日志
    if (epoch + 1) % 100 == 0:
        print('Epoch [{}/{}], Loss: {:.4f}'.format+1, 1000, loss.item()))

# 打印最终模型参数
print('w: {:.4f}, b: {:.4f}'.format(w.item(), b.item()))

在这个示例中,我们首先生成了100个随机数据点,并使用这些数据点来训练模型。然后,我们定义了一个包含一个权重和一个偏置的线性模型。我们使用均方误差损失函数和随机梯度下降优化器来训练模型。最后,我们打印了最终的模型参数。

示例2:使用Tensor进行卷积操作

在这个示例中,我们将使用Tensor来实现一个简单的卷积操作。我们将使用一个3x3的卷积核来对一个5x5的图像进行卷积操作。

import torch

# 定义输入图像和卷积核
x = torch.Tensor([[1, 2, 3, 4, 5],
                  [6, 7, 8, 9, 10],
                  [11, 12, 13, 14, 15],
                  [16, 17, 18, 19, 20],
                  [21, 22, 23, 24, 25]])
k = torch.Tensor([[1, 0, -1],
                  [2, 0, -2],
                  [1, 0, -1]])

# 定义卷积操作
def conv2d(x, k):
    h, w = k.size()
    y = torch.zeros(x.size()[0]-h+1, x.size()[1]-w+1)
    for i in range(y.size()[0]):
        for j in range(y.size()[1]):
            y[i][j] = torch.sum(x[i:i+h, j:j+w] * k)
    return y

# 进行卷积操作
y = conv2d(x, k)

# 打印卷积结果print(y)

在这个示例中,我们首先定义了一个5x5的输入图像和一个3x3的卷积核。然后,我们定义了一个卷积操作函数,该函数使用循环来计算卷积结果。最后,我们使用输入图像和卷积核来进行卷积操作,并打印卷积结果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:人工智能学习Pytorch教程Tensor基本操作示例详解 - Python技术站

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

相关文章

  • RefineDet -pytorch代码记录

    1、RuntimeError: copy_if failed to synchronize: device-side assert triggered 百度搜索说是标签要从0到N-1;N是类别数  很奇怪原本没有-1,输出label_idx就是从0开始的,    -1是背景类,置为0,;非背景类置为1:   2 无使用预训练的VGG 检测结果:     3 …

    2023年4月8日
    00
  • pytorch实现手写数字图片识别

    PyTorch是一个基于Python的科学计算库,它主要用于深度学习研究。在本文中,我们将介绍如何使用PyTorch实现手写数字图片识别。我们将分为两个部分,第一部分是数据预处理和模型训练,第二部分是模型测试和结果分析。 第一部分:数据预处理和模型训练 数据预处理 我们将使用MNIST数据集,该数据集包含60,000个训练图像和10,000个测试图像。每个图…

    PyTorch 2023年5月15日
    00
  • pytorch学习—dataset

    1、dataset是初入pytorch最重要的东西,在复现项目的时候,最需要改的就是数据集。  如果弄明白了pytorch中dataset类,你可以创建适应任意模型的数据集接口。 2、所谓数据集,无非就是一组{x:y}的集合吗,你只需要在这个类里说明“有一组{x:y}的集合”就可以了。 对于图像分类任务,图像+分类 对于目标检测任务,图像+bbox、分类 对…

    PyTorch 2023年4月8日
    00
  • pytorch保存模型和导入模型以及预训练模型

    参考 model.state_dict()中保存了{参数名:参数值}的字典 import torchvision.models as models resnet34 = models.resnet34(pretrained=True) resnet34.state_dict().keys() for param in resnet34.parameters(…

    PyTorch 2023年4月8日
    00
  • Windows下cpu版PyTorch安装

    1. 打开Anaconda Prompt  2. 输入命令添加清华源 conda config –add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/ 3.安装0.4.1的pytorch conda install pytorch-cpu=0.4.1 conda …

    2023年4月7日
    00
  • 教你用PyTorch部署模型的方法

    教你用PyTorch部署模型的方法 PyTorch是一种常用的深度学习框架,它提供了丰富的工具和函数,可以帮助我们快速构建和训练深度学习模型。在模型训练完成后,我们通常需要将模型部署到生产环境中,以便进行实时预测和推理。本文将详细讲解如何使用PyTorch部署模型的方法,并提供两个示例说明。 1. PyTorch模型的部署方法 PyTorch模型的部署方法通…

    PyTorch 2023年5月16日
    00
  • pytorch网络参数初始化

    在定义网络时,pythorch会自己初始化参数,但也可以自己初始化,详见官方实现 for m in self.modules(): if isinstance(m, nn.Conv2d): nn.init.kaiming_normal_(m.weight, mode=’fan_out’, nonlinearity=’relu’) elif isinstanc…

    PyTorch 2023年4月8日
    00
  • Pytorch中Tensor与各种图像格式的相互转化详解

    在PyTorch中,可以使用各种方法将Tensor与各种图像格式相互转换。以下是两个示例说明,介绍如何在PyTorch中实现Tensor与各种图像格式的相互转化。 示例1:将Tensor转换为PIL图像 import torch import torchvision.transforms as transforms from PIL import Image…

    PyTorch 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部