人工智能学习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日

相关文章

  • PyTorch加载数据集梯度下降优化

    在PyTorch中,加载数据集并使用梯度下降优化算法进行训练是深度学习开发的基本任务之一。本文将介绍如何使用PyTorch加载数据集并使用梯度下降优化算法进行训练,并演示两个示例。 加载数据集 在PyTorch中,可以使用torch.utils.data.Dataset和torch.utils.data.DataLoader类来加载数据集。torch.uti…

    PyTorch 2023年5月15日
    00
  • Pytorch官方教程:用RNN实现字符级的生成任务

    数据处理 传送门:官方教程 数据从上面下载。本次的任务用到的数据和第一次一样,还是18个不同国家的不同名字。 但这次需要根据这些数据训练一个模型,给定国家和名字的首字母时,模型可以自动生成名字。   首先还是对数据进行预处理,和第一个任务一样,利用Unicode将不同国家的名字采用相同的编码方式,因为要生成名字,所以需要加上一个终止符,具体作用后面会提到。 …

    2023年4月8日
    00
  • pytorch搭建网络模型的4种方法

    import torch import torch.nn.functional as F from collections import OrderedDict   # Method 1 —————————————–   class Net1(torch.nn.Module):   def __init_…

    PyTorch 2023年4月7日
    00
  • Pytorch中accuracy和loss的计算知识点总结

    PyTorch中accuracy和loss的计算知识点总结 在PyTorch中,accuracy和loss是深度学习模型训练和评估的两个重要指标。本文将对这两个指标的计算方法进行详细讲解,并提供两个示例说明。 1. 计算accuracy accuracy是模型分类任务中的一个重要指标,用于衡量模型在测试集上的分类准确率。在PyTorch中,可以使用以下代码计…

    PyTorch 2023年5月15日
    00
  • 图文详解在Anaconda安装Pytorch的详细步骤

    以下是在Anaconda安装PyTorch的详细步骤: 打开Anaconda Navigator,点击Environments,然后点击Create创建一个新的环境。 在弹出的对话框中,输入环境名称,选择Python版本,然后点击Create创建环境。 在创建好的环境中,点击Open Terminal打开终端。 在终端中输入以下命令,安装PyTorch: b…

    PyTorch 2023年5月16日
    00
  • 用PyTorch自动求导

    从这里学习《DL-with-PyTorch-Chinese》 4.2用PyTorch自动求导 考虑到上一篇手动为由线性和非线性函数组成的复杂函数的导数编写解析表达式并不是一件很有趣的事情,也不是一件很容易的事情。这里我们用通过一个名为autograd的PyTorch模块来解决。 利用autograd的PyTorch模块来替换手动求导做梯度下降 首先模型和损失…

    2023年4月6日
    00
  • 排序学习(learning to rank)中的ranknet pytorch简单实现

    一.理论部分   理论部分网上有许多,自己也简单的整理了一份,这几天会贴在这里,先把代码贴出,后续会优化一些写法,这里将训练数据写成dataset,dataloader样式。   排序学习所需的训练样本格式如下:      解释:其中第二列是query id,第一列表示此query id与这条样本的相关度(数字越大,表示越相关),从第三列开始是本条样本的特征…

    PyTorch 2023年4月7日
    00
  • 使用Pytorch实现two-head(多输出)模型的操作

    使用PyTorch实现two-head(多输出)模型的操作 在某些情况下,我们需要将一个输入数据分别送到两个不同的神经网络中进行处理,并得到两个不同的输出结果。这种情况下,我们可以使用PyTorch实现two-head(多输出)模型。本文将介绍如何使用PyTorch实现two-head(多输出)模型,并演示两个示例。 示例一:使用nn.ModuleList实…

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