我可以避免使用“Theano.scan”吗



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

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

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

我看到了三种可能性:

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

最新更新