【发布时间】:2015-10-22 08:45:54
【问题描述】:
我正在尝试在 theano 中实现扫描循环,给定张量将使用输入的“移动切片”。它不一定是实际的移动切片,它可以是表示移动切片的另一个张量的预处理张量。
基本上:
[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16]
|-------| (first iteration)
|-------| (second iteration)
|-------| (third iteration)
...
...
...
|-------| (last iteration)
其中|-------| 是每次迭代的输入。
我正在尝试找出最有效的方法,也许使用某种形式的引用或操纵步幅,但即使对于纯 numpy,我也没有设法使某些东西起作用。
我找到了一个可能的解决方案here,但我不知道如何使用 strides,我也没有看到将它与 theano 一起使用的方法。
【问题讨论】:
-
theano.sandbox.neighbours.images2neibs与您要查找的内容很接近。据我所知,它仅适用于 4D 张量,但您可以尝试将 1D 向量重塑为 (1, 1, 1, N)。 -
嗯,这其实需要一些更具体的信息,比如要应用到segment的函数是否需要查看过去的结果。最通用的解决方案是使用
theano.scan,如下面的答案,但有一些额外的信息,这可能会减少到例如具有适当内核的卷积,后跟一些其他函数。 -
我想要这个移动切片的原因是因为我试图对每个切片应用一维卷积。我认为我想要的已经实现 here 但我希望我希望在扫描期间将结果与其他操作串联起来,并且我假设获取每个切片的每个卷积结果会更有效,并且在我完成之后完成它移动到下一个。我认为@carriepl 回答的正是我想要测试我的理论的内容。如果您有任何其他使用 theano 的示例,请分享!谢谢