第一天,PyTorch张量的运算

这篇具有很好参考价值的文章主要介绍了第一天,PyTorch张量的运算。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、说明

pytorch 第三方下载地址

张量运算,包括算术、线性代数、矩阵运算(转置、索引、切片)、采样等。这些操作中的每一个都可以在 GPU 上运行(速度通常高于 CPU),默认情况下,张量是在 CPU 上创建的。我们需要使用方法将张量显式移动到 GPU .to(在检查 GPU 可用性之后)。注意的是:跨设备复制大型张量在时间和内存方面可能会很昂贵!

例如:

# We move our tensor to the GPU if available
if torch.cuda.is_available():
    tensor = tensor.to("cuda")
  1. 实现神经网络:神经网络是深度学习的核心,它是由多个层组成的,每一层都包含了一些张量的运算。在神经网络中,张量的运算被广泛应用于计算输入和输出之间的权重、偏差、激活函数等。

  2. 数据处理:在深度学习中,我们通常需要对数据进行预处理和转换。例如,图像分类任务中,我们需要将原始图像转换为张量并进行归一化操作。这些操作通常都涉及到对张量进行各种运算,如平均值计算、标准差计算、数据增强等。

  3. 特征提取:特征提取是深度学习中另一个重要的应用场景。在这个过程中,我们需要使用卷积运算从原始数据中提取出关键特征。卷积运算可以用于图像识别、语音识别等领域,它可以帮助我们从原始数据中提取出最有价值的信息。

  4. 模型评估:在深度学习中,我们通常需要对模型进行评估,以确定其性能如何。为此,我们需要使用各种张量的运算来计算模型的精度、召回率、F1得分等指标。

二、张量的常用运算

1. 索引和切片(与numpy类似)

例如:

tensor = torch.ones((4,4))
print(f"第一行数据: {tensor[0]}")
print(f"第一列数据: {tensor[:, 0]}")
print(f"最后一列数据: {tensor[..., -1]}")

tensor[:,1] = 0
print(f"整列赋值:{tensor}")

第一天,PyTorch张量的运算

2. 通过torch.cat来进行连接张量

torch.cat()函数在二维数据和三维数据上的详细说明

例如:

#接上面的张量设置
t = torch.cat([tensor,tensor,tensor],dim=1)
print('拼接结果:',t)

第一天,PyTorch张量的运算

3. 矩阵运算和算数运算

1. 在PyTorch中mulmatmul@的区别

  1. mul是逐元素相乘。当两个张量具有相同的形状时,使用mul对这两个张量进行逐元素相乘。例如,如果有一个大小为3x3的张量a和另一个大小也为3x3的张量b,则使用a.mul(b)将得到一个大小为3x3的张量,其中每个元素都是a和b对应位置上的元素相乘得到的结果。

mul的例子:

import torch

a = torch.tensor([[1, 2], [3, 4]])
b = torch.tensor([[5, 6], [7, 8]])

result = a.mul(b)
print(result)
  1. matmul是矩阵相乘。当两个张量不具有相同的形状时,我们使用matmul函数执行矩阵相乘。例如,如果有一个大小为3x4的张量a和另一个大小为4x5的张量b,则使用matmul(a, b)将得到一个大小为3x5的张量,其中每个元素都是a和b矩阵相乘后得到的结果。
import torch

a = torch.tensor([[1, 2], [3, 4], [5, 6]])
b = torch.tensor([[7, 8], [9, 10]])

result = torch.matmul(a, b)
print(result)
  1. @符号是矩阵相乘的简写形式。与matmul函数类似,@符号也用于执行矩阵相乘的操作。可以使用x @ y或者torch.matmul(x, y)来计算两个张量的矩阵乘积。例如,如果有一个大小为3x4的张量a和另一个大小为4x5的张量b,则使用a @ b或者torch.matmul(a, b)将得到一个大小为3x5的张量,其中每个元素都是a和b矩阵相乘后得到的结果。
import torch

a = torch.tensor([[1, 2], [3, 4], [5, 6]])
b = torch.tensor([[7, 8], [9, 10]])

result = a @ b
print(result)

2. 矩阵运算和算数运算的示例

  1. 矩阵运算
tensor_d = torch.tensor(np.array([
    [3.,6.,8.,7.],
    [9.,8.,5.,6.],
    [5.,2.,1.,7.]
]))
print('tensor_d:',tensor_d)
tensor_d_T = tensor_d.matmul(tensor_d.T)
print('tensor_d_T:',tensor_d_T)

y1 = tensor_d @ tensor_d.T
print('矩阵转置结果:',y1)
y3 = torch.rand_like(y1)
y2 = torch.matmul(tensor_d,tensor_d.T,out=y3)
print('矩阵相乘结果:',y2)

第一天,PyTorch张量的运算

  1. 乘法运算
tensor_e = torch.tensor(np.array([
    [3.,6.,8.,7.],
    [9.,8.,5.,6.],
    [5.,2.,1.,7.]
]))
z1 = tensor_e * tensor_e
print('z1运算结果:',z1)
z2 = tensor_e.mul(tensor_e)
print('z2运算结果:',z2)
z3 = torch.rand_like(tensor_e)
z4 = torch.mul(tensor_e, tensor_e, out=z3)
print('z4运算结果:',z4)

第一天,PyTorch张量的运算

4. 聚合张量中的所有值

agg = tensor.sum()
print('agg:',agg)

第一天,PyTorch张量的运算

agg_item = agg.item() #将其转换为 Python 数值
print(agg_item, type(agg_item))

第一天,PyTorch张量的运算

5. 给所有元组增加1,使用add_,同理的还有其他的

print(f"{tensor} \n")
tensor.add_(1)
print(tensor)

add_()是一个in-place方法,它将张量中所有元素都加上1,并直接改变了原始张量的值。这意味着,当我们执行a.add_(1)时,张量a中的每个元素都会增加1,而不会创建新的变量。这种方法可用于更新权重、偏差等参数,以及执行其他需要直接改变张量的操作。

需要注意的是,in-place操作往往具有副作用,可能会导致难以预测的结果。因此,在使用in-place方法时,一定要确保自己清楚地知道这种方法的影响,并且仅在必要时使用它们。

三,张量的计算

更为全面的阅读

涵盖一百多种张量运算文章来源地址https://www.toymoban.com/news/detail-495395.html

到了这里,关于第一天,PyTorch张量的运算的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【PyTorch】PyTorch中张量(Tensor)统计操作

    第五章 PyTorch中张量(Tensor)统计操作 上文介绍了PyTorch中张量(Tensor)的计算操作,本文将介绍张量的统计操作。 函数 描述 torch.max() 找出张量中的 最大值 torch.argmax() 输出 最大值所在位置 torch.min() 找出张量中的 最小值 torch.argmin() 输出 最小值所在位置 torch.sort() 对一维张量或多

    2024年02月21日
    浏览(35)
  • pytorch实战 -- 初窥张量

    张量的创建 张量(Tensors)类似于NumPy的ndarrays,但张量可以在GPU上进行计算。 所以从本质上来说,PyTorch是一个处理张量的库。一个张量是一个数字、向量、矩阵或任何n维数组。 下面分别展示了0维张量到n位张量: 一、直接创建 torch.tensor(data, dtype=None, device=None, requires_grad=

    2024年02月08日
    浏览(24)
  • Pytorch张量升维

    pytorch使用过程中,经常需要对张量进行维度校准。我们简单 把一个2x2的tensor升维到1x2x2 ,该怎么做呢? 方法一: a[None] 方法二: a.unsqueeze(0) 虽然方法二比方法一更繁琐,但比方法一更加灵活。如果你想升维度2x2-2x1x2,可以: 同理, a.unsqueeze(2) 也可以升维成(2,2,1)。方法一的

    2024年02月12日
    浏览(26)
  • PyTorch C++ 前端:张量

    本篇文章将尝试了解 PyTorch 组件的高级概述以及它们如何配合。 PyTorch 组件的高级概述 后端 PyTorch 后端是用 C++ 编写的,它提供 API 来访问高度优化的库,例如:用于高效矩阵运算的张量库、用于执行 GPU 运算的 CUDA 库以及用于梯度计算的自动微分等。 前端 可以使用 Python 或

    2024年02月07日
    浏览(25)
  • PyTorch核心--tensor 张量 !!

    文章目录 前言 张量的概念 1. 张量的定义 2. 张量的属性 3. 张量的形状 张量的原理 1. 存储(storage) 2. 形状(shape) 3. 步幅(stride) 张量的操作 1. 数学运算 2. 逻辑运算 3. 索引和切片 4. 形状操作 5. 广播 总结 在PyTorch中,张量是核心数据结构,它是一个多维数组,类似Numpy中

    2024年01月23日
    浏览(33)
  • 关于pytorch张量维度转换大全

    view() 用于 改变张量的形状 ,但 不会改变张量中的元素值 。 用法1: 例如,你可以使用view 将一个形状是(2,3)的张量变换成(3,2)的张量; 上面的操作相当于,先把形状为**(2,3)的tensor展平,变成(1,6),然后再变成(3,2).** 用法2: 转换前后张量中的元素个数

    2024年02月06日
    浏览(34)
  • 深度学习 pytorch的使用(张量2)

    tensor([[7, 6, 9, 4, 6],         [1, 9, 0, 9, 2],         [5, 7, 1, 7, 4],         [1, 2, 7, 2, 1]]) tensor([7, 6, 9, 4, 6]) tensor([7, 1, 5, 1]) tensor([6, 0]) tensor([[7, 6],         [1, 9],         [5, 7]]) tensor([[5, 7],         [1, 2]]) tensor([[7, 6, 9, 4, 6],         [1, 2, 7, 2, 1]]) tensor([[6, 4],         [9, 9],  

    2024年01月23日
    浏览(38)
  • 深度学习 pytorch的使用(张量1)

     tensor(10) tensor([[-1.0923, -0.0842,  1.5959],         [ 0.4562,  1.0242,  0.0691]], dtype=torch.float64) tensor([[10., 20., 30.],         [40., 50., 60.]]) --------------------------------------------------  tensor([[-1.4189e-09,  1.7614e-42,  0.0000e+00],         [ 0.0000e+00,  0.0000e+00,  0.0000e+00]]) tensor([10.]) tensor([10., 20

    2024年01月22日
    浏览(30)
  • 【深度学习】pytorch——Tensor(张量)详解

    笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~ Tensor,又名张量。它可以是一个数(标量)、一维数组(向量)、二维数组(矩阵)和更高维的数组(高阶数据)。Tensor和Numpy的ndarrays类似,但PyTorch的tensor支持GPU加速。 官方文档 : https://pytorch.org/docs/stable/tensors.html

    2024年02月06日
    浏览(34)
  • Pytorch 张量操作 Python切片操作

    梳理一下Pytorch的张量切片操作 一维向量的操作其实很像numpy一维数组,基本定义如下: 1.默认步长为1 2.起始索引:结束索引 是一个**左闭右开区[)**间,即结束索引的值不取 3.有反向索引,具体如下: [起始索引:结束索引:步长] 对于一维向量而言,操作使用 冒号 :,而对于

    2023年04月09日
    浏览(41)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包