提交 c68a0d18 authored 作者: Arnaud Bergeron's avatar Arnaud Bergeron

Disable alpha_merge and output_merge for blocksparse since the

non-broken version need a working beta param and it's too much work for now.
上级 585ccdc7
...@@ -645,19 +645,22 @@ if cuda_available: ...@@ -645,19 +645,22 @@ if cuda_available:
if node.op == sparse_block_outer_ss: if node.op == sparse_block_outer_ss:
return [sparse_block_outer_ss_inplace(*node.inputs)] return [sparse_block_outer_ss_inplace(*node.inputs)]
# Should be run before elemwise fusion # XXX: these optimisations were badly broken and now require a working
@opt.register_opt() # beta param (could only be a 0/1 thing for outer_merge, but
@alpha_merge(SparseBlockOuterSS, alpha_in=5, nd=4) # alpha_merge needs the full range).
def local_merge_blocksparse_alpha(node, *inputs):
""" # @opt.register_opt()
GpuElemwise{mul}(lr, SparseBlockOuterSS) -> SparseBlockOuterSS(..., alpha=lr) # @alpha_merge(SparseBlockOuterSS, alpha_in=5, beta_in=?, nd=4)
""" # def local_merge_blocksparse_alpha(node, *inputs):
return [sparse_block_outer_ss(*inputs)] # """
#GpuElemwise{mul}(lr, SparseBlockOuterSS) -> SparseBlockOuterSS(..., alpha=lr)
@opt.register_opt() # """
@output_merge(SparseBlockOuterSS, alpha_in=5, out_in=0, nd=4) # return [sparse_block_outer_ss(*inputs)]
def local_merge_blocksparse_output(node, *inputs):
return [sparse_block_outer_ss(*inputs)] # @opt.register_opt()
# @output_merge(SparseBlockOuterSS, alpha_in=5, beta_in=? out_in=0, nd=4)
# def local_merge_blocksparse_output(node, *inputs):
# return [sparse_block_outer_ss(*inputs)]
def sparse_block_dot_SS(W, h, inputIdx, b, outputIdx): def sparse_block_dot_SS(W, h, inputIdx, b, outputIdx):
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论