Torch7:具有不一致大小的张量的加法层,如numpy

时间:2016-04-16 15:58:19

标签: numpy torch

我想添加两个具有不同dimmension的张量。

例如:

x = torch.ones(4,5)
y = torch.ones(4,3,5)

在numpy中,我可以这样做:

import numpy as np
x = np.ones((4,5))
y = np.ones((4,3,5))
y + x[:,None,:]

#Prints out
array([[[ 2.,  2.,  2.,  2.,  2.],
    [ 2.,  2.,  2.,  2.,  2.],
    [ 2.,  2.,  2.,  2.,  2.]],

   [[ 2.,  2.,  2.,  2.,  2.],
    [ 2.,  2.,  2.,  2.,  2.],
    [ 2.,  2.,  2.,  2.,  2.]],

   [[ 2.,  2.,  2.,  2.,  2.],
    [ 2.,  2.,  2.,  2.,  2.],
    [ 2.,  2.,  2.,  2.,  2.]],

   [[ 2.,  2.,  2.,  2.,  2.],
    [ 2.,  2.,  2.,  2.,  2.],
    [ 2.,  2.,  2.,  2.,  2.]]])

It has a shape of (4,3,5)

有没有办法在nn.CMulTable()上重现这个?当我查看x这样的x:view(4,1,5)张量时,它会给我一个错误inconsistent tensor size

m = nn.CAddTable()
m:forward({y, x:view(4,1,5)})

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

使用expandAs获得4x3x5张量:

m:forward({y, x:view(4,1,5):expandAs(y)})