Add asserts to check if self.gradients is None before computing gradients in L_Op

上级 4acd7fc0
......@@ -49,7 +49,6 @@ class GpuConnectionistTemporalClassification(gof.COp):
'your system.')
self.compute_grad = compute_grad
self.gradients = None
# Return only the cost. Gradient will be returned by grad()
self.default_output = 0
......@@ -129,6 +128,8 @@ class GpuConnectionistTemporalClassification(gof.COp):
def L_op(self, inputs, outputs, output_grads):
# Gradients computed by Op
gradients = self.gradients
assert gradients is not None
# Gradients of original function, to compose chain rule
grad_op = output_grads[0]
grad_shuffle = GpuDimShuffle(input_broadcastable=(False, False, False,),
......
......@@ -116,6 +116,8 @@ class ConnectionistTemporalClassification(gof.COp, gof.OpenMPOp):
def L_op(self, inputs, outputs, output_grads):
gradients = self.gradients
assert gradients is not None
grad_op = output_grads[0]
total_grad = T.basic.batched_dot(grad_op, gradients.dimshuffle(1, 0, 2)).dimshuffle(1, 0, 2)
return [total_grad,
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论