Torch常用函数详解T

本文详细介绍了PyTorch中的Torch库,重点讲解了张量(Tensors)的创建、索引、切片、连接、换位、随机抽样、序列化、并行化以及丰富的数学操作,包括点乘、比较运算、累积操作等,旨在帮助读者深入理解PyTorch中的核心概念和操作。
摘要由CSDN通过智能技术生成

torch

本笔记引用自PyTorch中文文档

torch包含了多维疑是的数据结构及基于其上的多种数学操作。

1. 张量Tensors

torch.is_tensor(obj):

如果obj是一个pytorch张量,则返回True

torch.is_storage(obj):

如果obj是一个pytorch storage对象,则返回True

torch.numel(input):

返回input张量中的元素个数。

2. 创建操作

torch.eye(n, m=None, out=None):

返回一个2维张量,对角线为1,其它位置为0

  • n (int) -行数
  • m (int, optional)列数,如果为None,则默认为n
  • out (Tensor, optional)

torch.from_numpy(ndarray):

numpy.ndarray转换为Tensor返回的张量tensor和numpy的ndarray共享同一内存空间,修改一个会导致另一个也被修改,返回的张量不能改变大小

torch.linspace(start, end, steps=100, out=None):

返回一个1维张量,包含在startend上均匀间隔的steps个点

  • start (float) -序列起点
  • end (float) - 序列终点
  • steps (int) - 在startend间生成的样本数
  • out (Tensor, optional) - 结果张量

torch.logspace(start, end, steps=100, out=None):

返回一个1维张量,包含在区间10exp(start)和10exp(end)上以对数刻度均匀间隔的 steps个点。

torch.ones(*sizes, out=None):

返回一个全为1的张量,形状由可变参数sizes定义

  • sizes (int...) - 整数序列,定义了输出形状

torch.rand(*sizes, out=None):

返回一个张量,包含了从区间(0, 1)的均匀分布中抽取的一组随机数,形状由可变参数sizes定义。

torch.randn(*sizes, out=None):

返回一个张量,包含了从标准正态分布(mean=0, std=1)中抽取一组随机数,形状由可变参数sizes定义。

torch.randperm(n, out=None):

给定参数n,返回一个从0到n-1的随机整数排列

  • n (int) - 上边界(不包含)

torch.arange(start, end, step=1, out=None):

返回一个1维张量,长度为floor((end-start)/step),以step`为步长的一组序列值。

  • start (float) - 起点
  • end (float) - 终点(不包含)
  • step (float) - 相邻点的间隔大小
  • out (Tensor, optional)

torch.range(start, end, step=1, out=None):

还是推荐使用torch.arange()

torch.zeros(*sizes, out=None):

返回一个全为标量0的张量,形状由可变参数sizes定义

3. 索引,切片,连接,换位(Index, Slicing, Joining, Mutating)

torch.cat(inputs, dimension=0):

在给定维度上对输入的张量序列seq进行连接操作。

  • inputs (sequence of Tensors)
  • dimension (int optional) - 沿着此维连接张量序列

torch.chunk(tensor, chunks, dim=0):

在给定维度上将输入张量进行分块

  • tensors(Tensors) - 待分场的输入张量
  • chunks (int) - 分块的个数
  • dim (int) - 沿着此维度

torch.gather(input, dim, index, out=None):

沿给定轴dim,将输入索引张量index指定位置的值进行聚合。

  • input(Tensor) - 源张量
  • dim(int) - 索引的轴
  • index(LongTensor) - 聚合元素的下标
  • out - 目标张量

torch.index_select(input, dim, index, out=None):

沿指定维度对输入进行切片,取index中指定的相应项,然后返回一个新的张量,返回的张量与原始张量有相同的维度(在指定轴上),返回的张量与原始张量不共享内存空间

  • input(Tensor) - 输入张量
  • dim(int) - 索引的轴
  • index(LongTensor) - 包含索引下标的一维张量
  • out - 目标张量

torch.masked_select(input, mask, out=None):

根据掩码张量mask中的二元值,取输入张量中的指定项,将取值返回到一个新的1D张量。
张量mask须跟input张量有相同的元素数目,但形状或维度不需要相同。返回的张量不与原始张量共享内存空间

  • input(Tensor) - 输入张量
  • mask(ByteTensor) - 掩码张量,包含了二元索引值
  • out - 目标张量

torch.nonzero(input, out=None):

返回一个包含输入input中非零元素索引的张量,输出张量中的每行包含输入中非零元素的索引
若输入inputn维,则输出的索引张量output形状为z * n, 这里z是输入张量input中所有非零元素的个数

  • input(Tensor) - 输入张量
  • out - 包含索引值的结果张量

torch.split(tensor, split_size, dim=0):

将输入张量分割成相等形状的chunks(如果可分)。如果沿指定维的张量形状大小不能被split_size整分,则最后一个分块会小于其它分块。

  • tensor(Tensor) - 待分割张量
  • split_size(int) - 单个分块的形状大小
  • dim(int) - 沿着此维进行分割

torch.squeeze(input, dim=None, out=None):

将输入张量形状中的1去除并返回,如果输入是形如(A * 1 * B * 1 * C * 1 *D),那么输出形状就为:(A * B * C * D)。
当给定dim时,则只在给定维度上进行挤压,如输入形状为(A * 1 * B),squeeze(input, 0),将会保持张量不变,只有用

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SUNNY小飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值