在Theano上自定义操作/功能



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

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

1.如果我使用python的内置函数sum()而不是T.sum(,会有什么不同。sum(()还会工作,但可能会更慢吗?

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

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

在任何情况下,您都必须使用T.sum(), T.neq(), T.argmax(),T.grad()T.matrix等其他变量进行符号计算。例如,不能使用内置的sum()。如果你使用theano,你必须遵循theano自己的方法,因为theano使用不同形式的计算来利用gpu的架构。

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

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

很高兴能提供帮助!如果你觉得我的答案对你有用,可以接受。:-)

最新更新