提交 5d551988 authored 作者: Frederic Bastien's avatar Frederic Bastien

fix GpuMultinomialFromUniform and enable it.

上级 ddfa25b9
...@@ -121,6 +121,12 @@ class MultinomialFromUniform(Op): ...@@ -121,6 +121,12 @@ class MultinomialFromUniform(Op):
class GpuMultinomialFromUniform(MultinomialFromUniform): class GpuMultinomialFromUniform(MultinomialFromUniform):
"""
The output is transposed compared to MultinomialFromUniform.
We must insert a Transpose op after it.
The optimization that move it to the gpu do it.
"""
def make_node(self, pvals, unis): def make_node(self, pvals, unis):
assert pvals.dtype == 'float32' assert pvals.dtype == 'float32'
...@@ -290,8 +296,8 @@ def use_gpu_multinomial(node): ...@@ -290,8 +296,8 @@ def use_gpu_multinomial(node):
any([i.owner and isinstance(i.owner.op, theano.sandbox.cuda.HostFromGpu) any([i.owner and isinstance(i.owner.op, theano.sandbox.cuda.HostFromGpu)
for i in node.inputs])): for i in node.inputs])):
gpu_op = GpuMultinomialFromUniform(node.op.odtype) gpu_op = GpuMultinomialFromUniform(node.op.odtype)
return [host_from_gpu(gpu_op(*[gpu_from_host(i) for i in node.inputs]))] return [host_from_gpu(gpu_op(*[gpu_from_host(i) for i in node.inputs])).T]
if cuda_available: if cuda_available:
# Currently this it is bugged! register_opt()(use_gpu_multinomial)
#register_opt()(use_gpu_multinomial)
pass pass
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论