鉴于以下网络的开始
local net = nn.Sequential()
net:add(SpatialConvolution(3, 64, 4, 4, 2, 2, 1, 1))
输入张量input
local input = torch.Tensor(batchSize, 3, 64, 64)
// during training
local output = net:forward(input)
我想修改网络以接受第二个张量cond
作为输入
local cond = torch.Tensor(batchSize, 1000, 1, 1)
// during training
local output = net:forward({input, cond})
我在添加SpatialConvolution之前添加了JoinTable来修改网络,如下所示:
local net = nn.Sequential()
net:add(nn.JoinTable(2, 4))
net:add(SpatialConvolution(3, 64, 4, 4, 2, 2, 1, 1))
这不起作用,因为两个张量在尺寸2,3和4上都有不同的尺寸。cond
张量的大小(batchSize,1000,64,64)不是一个选项,因为它是浪费记忆。
是否有最佳实践可以在网络开头合并两个不同的张量,以便将其输入第一层。
答案 0 :(得分:1)
没有兼容形状的“合并”张量这样的东西。您只需传递张量表并使用SelectTable操作启动您的网络并使用nngraph,而不是简单的顺序。特别是 - 你怎么能期望空间卷积能够解决这种奇怪的“张量”,它会“缩小”到你的cond?对于这样的用例,数学中没有明确定义的操作,因此你必须更具体(你将使用nngraph和SelectTable实现)。