在 Theano 上自定义 operation/function

Customize operation/function on Theano

我是 Theano 库的新手,该库用于在 GPU 设备上进行深度学习。我注意到有几个内置操作可以支持 gpu 计算(我猜他们是专门以支持 GPU 的方式编写的):

 import theano.tensor as T
 T.sum(), T.neq(), T.argmax(),T.grad()

1.What 是我使用 python 的内置函数 sum() 而不是 T.sum() 的区别。 sum() 是否仍然有效但可能更慢?

  1. 假设 sum() 不适用于 gpu 计算,那么如果我需要任何可在 gpu 上运行的 operation/function,我需要以这种方式实现它。例如我想计算 sin(x),其中 x 是向量或矩阵,并存储在 GPU 内存中。是否有任何提示可以实现可以在 gpu 设备上运行的 sin(x) ? (这可能不适合或不容易回答)

  2. 我无法理解 T.grad()。 T.grad 如何对任何给定的平滑符号函数进行符号计算?我很好奇

在 theano 中,你必须使用 T.sum(), T.neq(), T.argmax(),T.grad() 来对像 T.matrix 这样的 theano 变量进行符号计算。例如,您不能使用内置的 sum()。 如果你使用theano,你必须遵循theano自己的方法,因为theano使用不同形式的计算来利用gpu的架构。

但是如果你想使用 sum() 你可以用它来计算,然后创建一个 theano.shared 变量来存储结果,这样你就可以将它存储在 gpu 的运行时内存。

关于 T.grad() 也许你应该问 theano 开发者。 :) 但是我认为当 theano 是 运行 时,它可以使用利用 gpu 计算能力的实际变量来计算函数的梯度运行时间。 希望对您有所帮助。

很高兴对您有所帮助!如果您觉得对您有用,请采纳我的回答。 :-)