pytorch使用-tensor的基本操作解读

在PyTorch中,tensor是深度学习任务中的基本数据类型。tensor可以看作是一个多维数组,可以进行各种数学运算和操作。本文将介绍tensor的基本操作,包括创建tensor、索引和切片、数学运算和转换等,并提供两个示例。

创建tensor

在PyTorch中,我们可以使用torch.tensor()函数来创建tensor。示例代码如下:

import torch

# 创建一个1维的tensor
x = torch.tensor([1, 2, 3, 4, 5])
print(x)

# 创建一个2维的tensor
y = torch.tensor([[1, 2, 3], [4, 5, 6]])
print(y)

# 创建一个3维的tensor
z = torch.tensor([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print(z)

在上述代码中,我们分别创建了一个1维、2维和3维的tensor。可以看到,tensor的维度由传入的数据的维度决定。

索引和切片

在PyTorch中,我们可以使用索引和切片来访问tensor中的元素。示例代码如下:

import torch

# 创建一个2维的tensor
x = torch.tensor([[1, 2, 3], [4, 5, 6]])

# 访问第一个元素
print(x[0, 0])

# 访问第一行
print(x[0, :])

# 访问第一列
print(x[:, 0])

# 访问第一行第二列和第二行第三列
print(x[[0, 1], [1, 2]])

# 切片操作
print(x[:, 1:])

在上述代码中,我们使用索引和切片来访问tensor中的元素。可以看到,索引和切片操作与Python中的列表和数组操作类似。

数学运算

在PyTorch中,我们可以对tensor进行各种数学运算。示例代码如下:

import torch

# 创建两个2维的tensor
x = torch.tensor([[1, 2, 3], [4, 5, 6]])
y = torch.tensor([[7, 8, 9], [10, 11, 12]])

# 加法运算
print(x + y)

# 减法运算
print(x - y)

# 乘法运算
print(x * y)

# 矩阵乘法运算
print(torch.matmul(x, y.T))

# 平均值运算
print(torch.mean(x))

# 标准差运算
print(torch.std(x))

在上述代码中,我们对两个tensor进行了加法、减法、乘法、矩阵乘法、平均值和标准差等运算。可以看到,PyTorch提供了丰富的数学运算函数,可以方便地进行各种数学运算。

转换操作

在PyTorch中,我们可以使用tensor的转换函数来进行类型转换、形状转换和维度转换等操作。示例代码如下:

import torch

# 创建一个2维的tensor
x = torch.tensor([[1, 2, 3], [4, 5, 6]])

# 类型转换
x = x.float()
print(x.dtype)

# 形状转换
x = x.view(3, 2)
print(x.shape)

# 维度转换
x = x.unsqueeze(0)
print(x.shape)

# 维度转换
x = x.squeeze(0)
print(x.shape)

在上述代码中,我们对tensor进行了类型转换、形状转换和维度转换等操作。可以看到,PyTorch提供了丰富的转换函数,可以方便地进行各种转换操作。

示例一:使用tensor实现线性回归

我们可以使用tensor来实现线性回归。示例代码如下:

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

# 创建数据集
x = np.random.rand(100, 1)
y = 2 * x + 1 + np.random.randn(100, 1) * 0.1

# 转换为tensor
x = torch.from_numpy(x).float()
y = torch.from_numpy(y).float()

# 定义模型
model = nn.Linear(1, 1)

# 定义损失函数
criterion = nn.MSELoss()

# 定义优化器
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)

# 训练模型
for epoch in range(1000):
    # 前向传播
    y_pred = model(x)

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

    # 反向传播
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()

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

# 绘制结果
plt.scatter(x.numpy(), y.numpy())
plt.plot(x.numpy(), y_pred.detach().numpy(), 'r')
plt.show()

在上述代码中,我们使用tensor来实现线性回归。首先,我们创建了一个数据集,并将其转换为tensor。然后,我们定义了一个线性回归模型、一个均方误差损失函数和一个随机梯度下降优化器。最后,我们训练模型并绘制结果。

示例二:使用tensor实现卷积神经网络

我们可以使用tensor来实现卷积神经网络。示例代码如下:

import torch
import torch.nn as nn
import torch.nn.functional as F

# 定义卷积神经网络
class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.conv1 = nn.Conv2d(3, 6, 5)
        self.pool = nn.MaxPool2d(2, 2)
        self.conv2 = nn.Conv2d(6, 16, 5)
        self.fc1 = nn.Linear(16 * 5 * 5, 120)
        self.fc2 = nn.Linear(120, 84)
        self.fc3 = nn.Linear(84, 10)

    def forward(self, x):
        x = self.pool(F.relu(self.conv1(x)))
        x = self.pool(F.relu(self.conv2(x)))
        x = x.view(-1, 16 * 5 * 5)
        x = F.relu(self.fc1(x))
        x = F.relu(self.fc2(x))
        x = self.fc3(x)
        return x

# 创建一个随机输入
x = torch.randn(1, 3, 32, 32)

# 创建一个卷积神经网络
net = Net()

# 前向传播
y = net(x)

# 打印输出
print(y)

在上述代码中,我们使用tensor来实现卷积神经网络。首先,我们定义了一个卷积神经网络模型。然后,我们创建了一个随机输入,并将其输入到卷积神经网络中进行前向传播。最后,我们打印输出结果。

总结

本文介绍了tensor的基本操作,包括创建tensor、索引和切片、数学运算和转换等。tensor是PyTorch中的基本数据类型,可以方便地进行各种数学运算和操作。使用tensor可以方便地实现各种深度学习任务,如线性回归和卷积神经网络等。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:pytorch使用-tensor的基本操作解读 - Python技术站

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

相关文章

  • [pytorch][持续更新]pytorch踩坑汇总

    BN层不能少于1张图片 File “/home/user02/wildkid1024/haq/models/mobilenet.py”, line 71, in forward x = self.features(x) File “/home/user02/anaconda2/envs/py3_dl/lib/python3.6/site-packages/t…

    PyTorch 2023年4月8日
    00
  • PyTorch教程【六】Transforms的使用

    from PIL import Image from torch.utils.tensorboard import SummaryWriter from torchvision import transforms # python的用法->tensor数据类型 # 通过transforms.ToTensor去看两个问题 # 绝对路径:D:leran_p…

    2023年4月6日
    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
  • numpy中的delete删除数组整行和整列的实例

    在使用NumPy进行数组操作时,有时需要删除数组中的整行或整列。本文提供一个完整的攻略,以帮助您了解如何使用NumPy中的delete函数删除数组整行和整列。 步骤1:导入NumPy模块 在使用NumPy中的delete函数删除数组整行和整列之前,您需要导入NumPy模块。您可以按照以下步骤导入NumPy模块: import numpy as np 步骤2:…

    PyTorch 2023年5月15日
    00
  • Pytorch 扩展Tensor维度、压缩Tensor维度的方法

    PyTorch扩展Tensor维度、压缩Tensor维度的方法 在PyTorch中,我们可以使用一些函数来扩展或压缩张量的维度。在本文中,我们将介绍如何使用PyTorch扩展Tensor维度、压缩Tensor维度,并提供两个示例说明。 示例1:使用PyTorch扩展Tensor维度 以下是一个使用PyTorch扩展Tensor维度的示例代码: import …

    PyTorch 2023年5月16日
    00
  • Pytorch在各个领域应用的github仓库合集

    这份合集列表中包含了与pytorch有关的各种教程,项目,库,视频,文章,书籍等等,可谓是极其丰富了。 表单数据 教程 可视化 可解释性 物体检测 长拖尾 / Out-of-Distribution Recognition 基于能量的学习 缺失数据 架构搜索 优化 量化 量子机器学习 神经网络压缩 面部,行为和姿势识别 超分辨率 Synthetesizing…

    PyTorch 2023年4月8日
    00
  • PyTorch CUDA环境配置及安装的步骤(图文教程)

    PyTorch CUDA环境配置及安装的步骤(图文教程) PyTorch 是一个广泛使用的深度学习框架,支持 GPU 加速。在使用 PyTorch 进行深度学习模型训练时,我们通常需要配置 CUDA 环境。本文将详细讲解 PyTorch CUDA 环境配置及安装的步骤,并提供两个示例说明。 1. 安装 CUDA 首先,我们需要安装 CUDA。在安装 CUDA…

    PyTorch 2023年5月16日
    00
  • win10系统配置GPU版本Pytorch的详细教程

    Win10系统配置GPU版本PyTorch的详细教程 在Win10系统上配置GPU版本的PyTorch需要以下步骤: 安装CUDA和cuDNN 安装Anaconda 创建虚拟环境 安装PyTorch和其他依赖项 以下是每个步骤的详细说明: 1. 安装CUDA和cuDNN 首先,需要安装CUDA和cuDNN。这两个软件包是PyTorch GPU版本的必要组件。…

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