我有一个colum向量,我想将其转换为行向量,在执行此操作时出现以下错误。有没有办法在火炬中转换1维向量
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'
答案 0 :(得分:2)
这是因为张量的维度为1.您只能采用尺寸为2的张量转置。
为了做到这一点,首先将张量调整为
bb:resize(2,1)
之后,它应该有效:
th> bb:t()
1 2
更一般地说,对于任何其他尺寸的张量,您只需使用:
bb:resize(bb:size(1),1)
答案 1 :(得分:0)
对于一维张量转置,您可以执行以下操作:
假设您有一维张量b:
public class Role
{
public int RoleId{ get; set; }
public string Role{ get; set; }
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Role>().ToTable("MyCustomRoleTable");
foreach (Type entityType in GetEntityTypes())
{
modelBuilder.RegisterEntityType(entityType);
}
modelBuilder.Configurations.AddFromAssembly(GetType().Assembly);
}
和.t()不适用于一维
import torch
a = torch.rand(1,10)
b = a[0,:]
您可以使用以下选项之一:
print(b)
#print(b.t()) # not going to work 1D
第一行创建1 * N矩阵,然后对其进行转置,第二行创建转置的N * 1矩阵