美文网首页
pytorch基础七(矩阵运算)

pytorch基础七(矩阵运算)

作者: 永远学习中 | 来源:发表于2018-12-08 23:21 被阅读0次

    后文主要是对pytorch官网的文档的总结。
    代码来自pytorch中文API

    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)
    注意:返回张量与输入张量共享内存,所以改变其中一个的内容会改变另一个。

    >>> x = torch.zeros(2,1,2,1,2)
    >>> x.size()
    (2L, 1L, 2L, 1L, 2L)
    >>> y = torch.squeeze(x)
    >>> y.size()
    (2L, 2L, 2L)
    >>> y = torch.squeeze(x, 0)
    >>> y.size()
    (2L, 1L, 2L, 1L, 2L)
    >>> y = torch.squeeze(x, 1)
    >>> y.size()
    (2L, 2L, 1L, 2L)
    

    torch.t(input, out=None) → Tensor

    输入一个矩阵(2维张量),并转置0, 1维。 可以被视为函数transpose(input, 0, 1)的简写函数。

    >>> x = torch.randn(2, 3)
    >>> x
     0.4834  0.6907  1.3417
    -0.1300  0.5295  0.2321
    [torch.FloatTensor of size 2x3]
    
    >>> torch.t(x)
     0.4834 -0.1300
     0.6907  0.5295
     1.3417  0.2321
    [torch.FloatTensor of size 3x2]
    

    torch.unsqueeze(input, dim, out=None)

    返回一个新的张量,对输入的制定位置插入维度 1。
    如果dim为负,则将会被转化dim+input.dim()+1。

    >>> x = torch.Tensor([1, 2, 3, 4])
    >>> torch.unsqueeze(x, 0)
     1  2  3  4
    [torch.FloatTensor of size 1x4]
    >>> torch.unsqueeze(x, 1)
     1
     2
     3
     4
    [torch.FloatTensor of size 4x1]
    

    torch.ones(*sizes, out=None) → Tensor

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

    torch.rand(*sizes, out=None) → Tensor

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

    torch.randn(*sizes, out=None) → Tensor

    返回一个张量,包含了从标准正态分布(均值为0,方差为 1,即高斯白噪声)中抽取一组随机数,形状由可变参数sizes定义。

    torch.zeros(*sizes, out=None) → Tensor

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

    torch.cat(inputs, dimension=0) → Tensor

    在给定维度上对输入的张量序列seq 进行连接操作。
    torch.cat()可以看做 torch.split() 和 torch.chunk()的反操作。

    >>> x = torch.randn(2, 3)
    >>> x
     0.5983 -0.0341  2.4918
     1.5981 -0.5265 -0.8735
    [torch.FloatTensor of size 2x3]
    
    >>> torch.cat((x, x, x), 0)
     0.5983 -0.0341  2.4918
     1.5981 -0.5265 -0.8735
     0.5983 -0.0341  2.4918
     1.5981 -0.5265 -0.8735
     0.5983 -0.0341  2.4918
     1.5981 -0.5265 -0.8735
    [torch.FloatTensor of size 6x3]
    
    >>> torch.cat((x, x, x), 1)
     0.5983 -0.0341  2.4918  0.5983 -0.0341  2.4918  0.5983 -0.0341  2.4918
     1.5981 -0.5265 -0.8735  1.5981 -0.5265 -0.8735  1.5981 -0.5265 -0.8735
    [torch.FloatTensor of size 2x9]
    

    torch.stack(sequence, dim=0)

    沿着一个新维度对输入张量序列进行连接。 序列中所有的张量都应该为相同形状。

    torch.normal()

    返回一个张量,包含从给定参数means,std的离散正态分布中抽取随机数。 均值means是一个张量,包含每个输出元素相关的正态分布的均值。 std是一个张量,包含每个输出元素相关的正态分布的标准差。 均值和标准差的形状不须匹配,但每个张量的元素个数须相同。

    参数:
    • means (Tensor) – 均值
    • std (Tensor) – 标准差
    • out (Tensor) – 可选的输出张量
    torch.normal(means=torch.arange(1, 11), std=torch.arange(1, 0, -0.1))
    
     1.5104
     1.6955
     2.4895
     4.9185
     4.9895
     6.9155
     7.3683
     8.1836
     8.7164
     9.8916
    [torch.FloatTensor of size 10]
    

    torch.mean(input) → float

    返回输入张量所有元素的均值。

    >>> a = torch.randn(1, 3)
    >>> a
    -0.2946 -0.9143  2.1809
    [torch.FloatTensor of size 1x3]
    >>> torch.mean(a)
    0.32398951053619385
    

    torch.Tensor

    char()

    将tensor元素改为char类型

    clone() → Tensor

    返回与原tensor有相同大小和数据类型的tensor

    contiguous() → Tensor

    返回一个内存连续的有相同数据的tensor,如果原tensor内存连续则返回原tensor

    dim() → int

    返回tensor的维数

    expand(*sizes)

    返回tensor的一个新视图,单个维度扩大为更大的尺寸。 tensor也可以扩大为更高维,新增加的维度将附在前面。 扩大tensor不需要分配新内存,只是仅仅新建一个tensor的视图,其中通过将stride设为0,一维将会扩展位更高维。任何一个一维的在不分配新内存情况下可扩展为任意的数值。
    sizes(torch.Size or int...)-需要扩展的大小

    >>> x = torch.Tensor([[1], [2], [3]])
    >>> x.size()
    torch.Size([3, 1])
    >>> x.expand(3, 4)
     1 1
     1 1
     2 2 2 2
     3 3 3 3
     [torch.FloatTensor of size 3x4]
    

    numpy() → ndarray

    将该tensor以NumPy的形式返回ndarray,两者共享相同的底层内存。原tensor改变后会相应的在ndarray有反映,反之也一样。

    repeat(*sizes)

    沿着指定的维度重复tensor。 不同于expand(),本函数复制的是tensor中的数据。
    *sizes (torch.Size ot int...)-沿着每一维重复的次数。

    >>> x = torch.Tensor([1, 2, 3])
    >>> x.repeat(4, 2)
     1  2  3  1  2  3
     1  2  3  1  2  3
     1  2  3  1  2  3
     1  2  3  1  2  3
    [torch.FloatTensor of size 4x6]
    >>> x.repeat(4, 2, 1).size()
    torch.Size([4, 2, 3])
    

    view(*args) → Tensor

    返回一个有相同数据但大小不同的tensor。 返回的tensor必须有与原tensor相同的数据和相同数目的元素,但可以有不同的大小。一个tensor必须是连续的contiguous()才能被查看。

    >>> x = torch.randn(4, 4)
    >>> x.size()
    torch.Size([4, 4])
    >>> y = x.view(16)
    >>> y.size()
    torch.Size([16])
    >>> z = x.view(-1, 8)  # the size -1 is inferred from other dimensions
    >>> z.size()
    torch.Size([2, 8])
    

    view_as(tensor)

    返回被视作与给定的tensor相同大小的原tensor。 等效于:

    self.view(tensor.size())
    

    相关文章

      网友评论

          本文标题:pytorch基础七(矩阵运算)

          本文链接:https://www.haomeiwen.com/subject/tcrchqtx.html