2016-08-14 89 views
0

鉴于网络如何合并两个张量在火炬网络的开始?

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)的大小是不因为其浪费的选项的记忆。

是否有任何合并网络开始时两个不同张量馈入第一层的最佳做法。

回答

1

没有“合并”张量的东西没有兼容的形状。您应该简单地通过张量表并开始您的网络与SelectTable操作并与nngraph一起使用,而不是简单的顺序。特别是 - 您如何期望Spatial Convolution能够处理这种向您的cond“缩小”的奇怪“张量”?在这种用例中没有明确的数学运算,因此您必须更具体(您将使用nngraph和SelectTable来实现)。

+0

使用nngraph做的伎俩 – Scholle