2017-06-22 71 views
0

我无法弄清楚为什么下面的代码不工作:串接在theano扫描

​​

我希望它仿佛

f = th.function(
    inputs = [a], 
    outputs = tt.concatenate([tt.concatenate([a,a]),tt.concatenate([a,a])]) 
) 

回答

0

返回同样在theano.scan文档字符串:

...初始状态应该具有相同的形状作为输出...

如果您的扫描涉及向量上的循环表达式,则该向量的形状不得更改。

lambda a: T.sqr(a) # OK 

lambda a: T.concat([a,a]) # ERROR 

其原因,内部扫描使用矩阵到矢量存储系统中所有的时间步骤。如果形状改变,则矩阵会变得粗糙。虽然理论上不是不可能实现,但它引入了更多复杂性和潜在问题。

所以,是的,scan是有限的。