【问题标题】:Understanding Temporal Convolution in Torch了解 Torch 中的时间卷积
【发布时间】:2016-12-13 08:22:23
【问题描述】:

我正在尝试通过 Torch 参数化 1D 转换网络。

假设我有一个名为dataTensor,其尺寸为10 x 512,其中有10 行和512 列。因此,我想实现TemporalConvolution 层的单个 3 层堆栈,然后是 ReLU,然后是 TemporalMaxPooling。我的分类问题是二元的,有一个对应的labels张量,也就是10 x 1。让我们假设已经编写了一个feval 来遍历datalabels 中的每个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 感到更加困惑,这似乎表明TemporalConvolutioninputFrameSize 应该设置为10 而不是512

任何关于如何构建一维卷积网络的指导都将不胜感激。


PS我已经使用logisticRegression 模型测试了脚本,并且该脚本运行了,所以问题纯粹在于卷积网络架构/进入其中的数据的形状。

【问题讨论】:

    标签: machine-learning lua deep-learning convolution torch


    【解决方案1】:

    我猜你误解了 inputFrameSize 的含义,它不是你输入的 seqlen 而是 n_channels(例如,对于 2d-convlution 中的 512*512 RGB 图像,inputFrameSize 应该是 3 而不是 512)。

    【讨论】:

      猜你喜欢
      • 2015-11-26
      • 2018-06-25
      • 2013-11-30
      • 2020-10-09
      • 2018-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-09
      相关资源
      最近更新 更多