在Theano上自定义操作/功能

时间:2015-06-25 21:18:06

标签: python 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如何对任何给定的平滑符号函数进行符号计算?我很好奇。

1 个答案:

答案 0 :(得分:0)

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

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

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

很高兴得到帮助!如果您觉得它对您有用,请随时接受我的回答。 : - )