在 Torch 中转置列向量

Rah*_*hul 6 torch

我有一个列向量,我想将其转换为行向量,但在执行此操作时出现以下错误。有没有办法在火炬中转置一维向量

th> bb
 1
 2
[torch.DoubleTensor of size 2]

                                                                      [0.0005s]
th> bb:t()
[string "_RESULT={bb:t()}"]:1: calling 't' on bad self (Tensor must have 2 dimensions at /tmp/luarocks_torch-scm-1-5379/torch7/generic/Tensor.c:590)
stack traceback:
    [C]: in function 't'
    [string "_RESULT={bb:t()}"]:1: in main chunk
    [C]: in function 'xpcall'
Run Code Online (Sandbox Code Playgroud)

Cha*_*tor 9

对于一维张量的转置,你可以这样做:

假设您有一维张量 b:

import torch

a = torch.rand(1,10)
b = a[0,:]
Run Code Online (Sandbox Code Playgroud)

和 .t() 不适用于 1D

print(b)
#print(b.t()) # not going to work 1D
Run Code Online (Sandbox Code Playgroud)

您可以使用以下选项之一:

print(b.reshape(1,-1).t())
print(b.reshape(-1,1))
Run Code Online (Sandbox Code Playgroud)

第一行创建 1*N 矩阵然后转置它,第二行创建转置后的 N*1 矩阵


Kar*_*kan 4

这是因为您的张量的维度为 1。您只能对维度为 2 的张量进行转置。

为此,首先将张量调整为

bb:resize(2,1)
Run Code Online (Sandbox Code Playgroud)

之后,它应该可以工作:

th> bb:t()
 1  2
Run Code Online (Sandbox Code Playgroud)

更一般地,对于任何其他大小的张量,您可以简单地使用:

bb:resize(bb:size(1),1)
Run Code Online (Sandbox Code Playgroud)