索引、切片、连接、换位
torch.cat()
torch.cat(inputs, dimension=0) → Tensor
在给定维度上对输入张量序列seq进行连接操作.
torch.cat()可以看做 torch.split() 和 torch.chunk()的反操作。 cat() 函数
可以通过下面例子更好的理解
参数:
- inputs (sequence of Tensors) 可以是任意相同的Tensor类型的python序列。
- dimension (int, optional) –沿着此维连接张量序列。
torch.chunk
torch.chunk(tensor, chunks, dim=0)
在给定维度上将输入张量进行分块儿。
参数:
- tensor (Tensor) – 待分块的输入张量
- chunks (int) – 分块的个数
- dim (int) – 沿着此维度进行分块
torch.gather
torch.gather(input, dim, index, out=None) → Tensor
沿给定轴dim,将输入的索引张量index,指定位置的值进行聚合。
参数
- input (Tensor) – 源张量
- dim (int) – 索引的轴
- index (LongTensor) – 聚合元素的下标
- out (Tensor, optional) – 目标张量
torch.index_select
torch.index_select(input, dim, index, out=None) → Tensor
沿着指定维度对输入进行切片,取index中指定的相应项数。((index 为一个 LongTensor)然后返回到一个新的张量,返回的张量与原始张量_Tensor**_有相同的维度(在指定轴上)**
注意:返回的张量不与原始张量共享内存空间**。**
参数:
- input (Tensor) – 输入张量
- dim (int) – 索引的轴
- index (LongTensor) – 包含索引下标的一维张量
- out (Tensor, optional) – 目标张量
torch.masked_select
torch.masked_select(input, mask, out=None) → Tensor
根据掩码张量mask中的二元值,取输入张量中的指定项(mask 为一个 ByteTensor)值返回到一个新的IID张量,张量mask需跟input张量有相同数量的元素数目。但形状和维度不需要相同,
注意:返回的张量不与原始向量共享内存**。**
参数:
- input (Tensor) – 输入张量
- mask (ByteTensor) – 掩码张量,包含了二元索引值
- out (Tensor, optional) – 目标张量
torch.nonzero
torch.nonzero(input, out=None) → LongTensor
返回一个包含输入input中非零元素索引的张量,输出张量中的每行包含输入中非零元素索引。
如果输入 input 有 n 维,则输出的索引张量 output 的形状为 z x n, 这里 z 是输入张量
input 中所有非零元素的个数。
参数:
- input (Tensor) – 源张量
- out (LongTensor, optional) – 包含索引值的结果张量
torch.split
torch.split(tensor, split_size, dim=0)
将输入张量分割成相等形状的 chunks(如果可分)。 如果沿指定维的张量形状大小不能被
split_size 整分, 则最后一个分块会小于其它分块。
参数:
- tensor(Tensor)-待分割张量
- split_size (int) – 单个分块的形状大小
- 'dim (int) – 沿着此维进行分割
torch.squeeze
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) 将
会保持张量不变,只有用 squeeze(input, 1),形状会变成 (A×B)。
注意:返回张量与输入张量共享内存,所以改变其中一个的内容会改变另一个。
参数:
- input (Tensor) – 输入张量
- dim (int, optional) – 如果给定,则 input 只会在给定维度挤压
- out (Tensor, optional) – 输出张量
torch.stack[source]
torch.stack(sequence, dim=0)
沿着一个新的维度对输入张量序列进行连接操作, 序列中所有的张量都应该为相同形状。
参数:
- sqequence (Sequence) – 待连接的张量序列
- dim (int) – 插入的维度。必须介于 0 与 待连接的张量序列数之间
torch.t
torch.t(input, out=None) → Tensor
输入一个矩阵(2 维张量),并转置 0, 1 维。 可以被视为函数 transpose(input, 0, 1)
的简写
参数:
- input (Tensor) – 输入张量
- out (Tensor, optional) – 结果张量
torch.transpose
torch.transpose(input, dim0, dim1, out=None) → Tensor
返回输入矩阵 input 的转置。交换维度 dim0 和 dim1。 输出张量与输入张量共享内存,
所以改变,其中一个会导致另外一个也被修改。
参数
- input (Tensor) – 输入张量
- dim0 (int) – 转置的第一维
- dim1 (int) – 转置的第二维
torch.unbind
torch.unbind(tensor, dim=0)[source]
移除指定维后,返回一个元组,包含了沿着指定维切片后的各个切片
参数:
-
tensor (Tensor) – 输入张量
-
dim (int) – 删除的维度
torch.unsqueeze
torch.unsqueeze(input, dim, out=None)
返回一个新的张量,对输入的制定位置插入维度 1
注意: 返回张量与输入张量共享内存,所以改变其中一个的内容会改变另一个。
如果 dim 为负,则将会被转化 dim+input.dim()+1
参数
- tensor (Tensor) – 输入张量
- dim (int) – 插入维度的索引
- out (Tensor, optional) – 结果张量
随机抽样
torch.manual_seed
torch.manual_seed(seed)
设定生成随机数的种子,并返回一个 torch._C.Generator 对象.
参数: seed (int or long) – 种子
torch.initial_seed
torch.initial_seed()
返回生成随机数的原始种子值(python long)
torch.get_rng_state
torch.get_rng_state()[source]
返回随机生成器状态(ByteTensor)
torch.set_rng_state
torch.set_rng_state(new_state)[source]
设定随机生成器状态 参数: new_state (torch.ByteTensor) – 期望的状态
torch.default_generator
torch.default_generator = <torch._C.Generator object>
torch.bernoulli
torch.bernoulli(input, out=None) → Tensor
从伯努利分布中抽取二元随机数(0 或者 1)。
输入张量须包含用于抽取上述二元随机值的概率。 因此,输入中的所有值都必须在[0,1]
区间,
参数:
- input (Tensor) – 输入为伯努利分布的概率值
- out (Tensor, optional) – 输出张量(可选)
torch.multinomia
torch.multinomial(input, num_samples,replacement=False, out=None) →
LongTensor
返回一个张量,每行包含从 input 相应行中定义的多项分布中抽取的 num_samples 个样本。
参数
- input (Tensor) – 包含概率值的张量
- num_samples (int) – 抽取的样本数
- replacement (bool, optional) – 布尔值,决定是否能重复抽取
- out (Tensor, optional) – 结果张量
torch.normal()
torch.normal(means, std, out=None)
返回一个张量,包含从给定参数 means,std 的离散正态分布中抽取随机数。 均值 means 是一
个张量,包含每个输出元素相关的正态分布的均值。 std 是一个张量,包含每个输出元素相关的
正态分布的标准差。 均值和标准差的形状不须匹配,但每个张量的元素个数须相同。
参数:
- means (Tensor) – 均值
- std (Tensor) – 标准差
- out (Tensor) – 可选的输出张量