我可以避免使用`Theano.scan`吗?

时间:2013-11-22 02:18:51

标签: theano

我有三维张量("tensor3" - 一个矩阵数组),我想计算每个矩阵的行列式(theano.sandbox.linalg.det)。有没有办法在不使用theano.scan的情况下计算每个决定因素?当我尝试直接在张量上调用det时,我得到了错误

3-dimensional array given. Array must be two-dimensional. 

但是我读到scan很慢并且不能很好地并行化,并且如果可能的话应该只使用张量操作。是这样吗?在这种情况下我可以避免使用扫描吗?

1 个答案:

答案 0 :(得分:0)

我看到了3种可能性:

  • 如果你在编译Theano函数之前知道tensor3变量中的矩阵数,你可以使用split()op或者在tensor3中的所有矩阵上调用det()。
  • 如果你不知道形状,你可以制作自己的操作,它将循环输入并调用numpy fct。请参阅an example了解如何制作操作。
  • 使用扫描。在这种情况下很容易使用它。请参阅this example,只需将呼叫从tensordot更改为det()。