我有一个列向量,我想将其转换为行向量,但在执行此操作时出现以下错误。有没有办法在火炬中转置一维向量
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)
对于一维张量的转置,你可以这样做:
假设您有一维张量 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 矩阵
这是因为您的张量的维度为 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)
| 归档时间: |
|
| 查看次数: |
7601 次 |
| 最近记录: |