我正在使用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实现和毕业,这对我来说看起来像是一个很长的镜头。 你能踢我正确的方向吗?我已经阅读了扩展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]]
谢谢 Ĵ
答案 0 :(得分:1)
所以这个问题可以通过这种方式解决。立即行动。
Y_= T.concatenate([Y_[c:Y_.shape[0]+c-left_ctx-right_ctx] for c in range(left_ctx+right_ctx+1)], axis=1)