【发布时间】:2016-12-13 08:22:23
【问题描述】:
我正在尝试通过 Torch 参数化 1D 转换网络。
假设我有一个名为data 的Tensor,其尺寸为10 x 512,其中有10 行和512 列。因此,我想实现TemporalConvolution 层的单个 3 层堆栈,然后是 ReLU,然后是 TemporalMaxPooling。我的分类问题是二元的,有一个对应的labels张量,也就是10 x 1。让我们假设已经编写了一个feval 来遍历data 和labels 中的每个row。
因此,问题是构建一个可以从512 列向下映射到1 列的网络
改编自documentation:
...
model = nn.Sequential()
model:add(nn.TemporalConvolution(inputFrameSize, outputFrameSize, kW, [dW]))
model:add(nn.ReLU())
model:add(nn.TemporalMaxPooling(kW2, [dW2])
...
criterion = nn.BCECriterion()
...
我已将其参数化如下,但以下不起作用:/
TemporalConvolution(512,1,3,1)
ReLU())
TemporalMaxPooling(3, 1)
它抛出错误:2D or 3D(batch mode) tensor expected。结果,我尝试在将data 传递到网络之前对其进行重塑:
data = data:resize(1, 100, 512)
但这会引发错误:invalid input frame size。
我可以看到错误与进入卷积网络的数据形状有关,当然也与参数化有关。我对this post here 感到更加困惑,这似乎表明TemporalConvolution 的inputFrameSize 应该设置为10 而不是512。
任何关于如何构建一维卷积网络的指导都将不胜感激。
PS我已经使用logisticRegression 模型测试了脚本,并且该脚本运行了,所以问题纯粹在于卷积网络架构/进入其中的数据的形状。
【问题讨论】:
标签: machine-learning lua deep-learning convolution torch