【发布时间】:2017-11-29 16:35:59
【问题描述】:
我正在尝试在 Lua 的 Torch 中为 Alexnet 的第一层创建并行表。我想将两批 RGB 图像传递给网络,然后将它们的添加发送到下一层。例如:假设我想将 6 个通道的图像发送到 alexnet 的第一层,但在这种情况下,我想将两批 3 个通道的图像发送到第一个并行层,将它们连接起来,然后将输出发送到下一层层。 实际代码是这样的:
net = nn.Sequential()
net:add(nn.SpatialConvolution(3,96,11,11,4,4,2,2))
net:add(nn.SpatialBatchNormalization(96))
net:add(nn.ReLU(true))
net:add(nn.SpatialMaxPooling(3,3,2,2))
net:add(nn.SpatialConvolution(96,256,5,5,1,1,2,2))
net:add(nn.SpatialBatchNormalization(256))
net:add(nn.ReLU(true))
net:add(nn.SpatialMaxPooling(3,3,2,2))
net:add(nn.SpatialConvolution(256,384,3,3,1,1,1,1))
我认为它可以工作的代码是:
net = nn.Sequential()
c = nn.ParallelTable()
c:add(nn.SpatialConvolution(3,48,11,11,4,4,2,2))
c:add(nn.SpatialConvolution(3,48,11,11,4,4,2,2))
net:add(c)
net:add(nn.JoinTable(1,8))
net:add(nn.SpatialBatchNormalization(96))
net:add(nn.ReLU(true))
net:add(nn.SpatialMaxPooling(3,3,2,2))
我得到的错误是:
在 nn.ParallelTable 的 1 个模块中: /torch/install/share/lua/5.1/cudnn/init.lua:171:断言失败!
我想知道这个实现哪里出了问题,非常感谢任何帮助。
谢谢
【问题讨论】:
-
实际代码显示输入有 18 个通道,因此您不能使用带有 3 个输入通道的
SpatialConvolution -
这是我的错误。实际代码是 3 将获得 3 个通道的输入,但现在我想给模型 2 批 3 通道图像(我可以通过在第一层将 3 更改为 6 来给模型批次 6 通道,但我想给网络两批3通道而不是一批6通道)
-
模型输入张量的尺寸是多少?
-
输入张量的尺寸是128* 3*227 * 227。
-
您正在使用 gpu 进行培训?你的模型和输入张量被转换成 cuda 模型和张量了吗?
标签: lua parallel-processing deep-learning layer torch