如何在 Torch 中有效地应用线性变换到三维输入向量?

假设我们有一个大小为 5x32x3000DoubleTensor 并且我们想要将它转换为大小为 5x32x100DoubleTensor 以便进一步输入。现在,我会做以下这些事情:

local seq = nn.Sequential()
seq:add(nn.SplitTable(1))
seq:add(nn.MapTable():add(nn.Linear(3000,100)))
seq:add(nn.JoinTable(1)):add(nn.View(5,32,100))

这看起来有点复杂,我感觉应该有更有效的方法。你能提出更好的解决方案吗?

点赞
用户7194361
用户7194361

我尝试过这个,它将按照你的要求输出大小为 (5, 32, 1000)

data = torch.Tensor(5, 32, 3000)
mul = torch.Tensor(3000, 1000)
res = torch.mm(data:view(5*32, 3000), mul):view(5, 32, 1000)
print(res:size())
2017-11-11 10:07:57
用户1984680
用户1984680

另一种方法可以是:

seq = nn.Sequential()
seq:add(nn.SplitTable(1)):add(nn.MapTable():add(nn.Linear(3000,100)))
seq:add(nn.JoinTable(1))
2017-11-12 13:57:59