【发布时间】:2014-10-06 16:43:22
【问题描述】:
我正在使用 theano.scan 创建这样的上下文堆叠向量:
Y_, scan_updates = theano.scan(fn=lambda *args,**kwargs: T.concatenate(args, axis=0),outputs_info=None, sequences=dict(input = Y_, taps=range(-left_ctx,right_ctx+1)))
扫描似乎太慢了,这会减慢整个处理速度。 在信号处理中,这是相当标准的操作,所以我正在考虑为此创建一个特殊的操作。 不幸的是,我还需要 GPU 实现和这个操作的 grad ,这对我来说看起来很长。 你能把我踢到正确的方向吗?我已经阅读了扩展 theano 文档,但仍然没有多大帮助。
例子:
如果是
left_ctx=right_ctx=1
矩阵:
[[0.0, 0.1],
[1.0, 1.1],
[2.0, 2.1],
[3.0, 3.1]]
将被转换为
[[0.0, 0.1, 1.0, 1.1, 2.0, 2.1],
[1.0, 1.1, 2.0, 2.1, 3.0, 3.1]]
谢谢 J
【问题讨论】:
-
究竟什么是“堆叠向量上下文”?任何参考或替代描述?我在信号处理中没有听说过这个名字。
-
您有一个特征向量矩阵(例如 100x15)。假设您想一次拍摄 5 帧并将它们堆叠到一个大向量中,因此对于每一帧,您将获得大小为 (1x75) 的向量。最后你会得到矩阵 96x75 (96 因为你在原始矩阵的开头和结尾没有足够的数据)。现在好点了吗?
-
我在原始问题中添加了示例。
-
啊好吧——基本上只是一个滑动窗口。