提交 ef487eed authored 作者: Frederic Bastien's avatar Frederic Bastien

Use L_op

上级 36b45acb
...@@ -1390,13 +1390,13 @@ class GpuDnnPool(DnnBase): ...@@ -1390,13 +1390,13 @@ class GpuDnnPool(DnnBase):
res.append((shape[0][4] + 2 * p[2] - w[2]) // s[2] + 1) res.append((shape[0][4] + 2 * p[2] - w[2]) // s[2] + 1)
return [res] return [res]
def grad(self, inp, grads): def L_op(self, inp, outputs, grads):
img, ws, stride, pad = inp img, ws, stride, pad = inp
grad, = grads grad, = grads
grad = gpu_contiguous(grad) grad = gpu_contiguous(grad)
out = self(img, ws, stride, pad) out, = outputs
g_out = GpuDnnPoolGrad(mode=self.mode)(img, out, grad, ws, stride, pad) g_out = GpuDnnPoolGrad(mode=self.mode)(img, out, grad, ws, stride, pad)
...@@ -1592,10 +1592,10 @@ class GpuDnnSoftmax(GpuDnnSoftmaxBase): ...@@ -1592,10 +1592,10 @@ class GpuDnnSoftmax(GpuDnnSoftmaxBase):
assert x.ndim == 4 assert x.ndim == 4
return Apply(self, [x], [x.type()]) return Apply(self, [x], [x.type()])
def grad(self, inp, grads): def L_op(self, inp, outputs, grads):
x, = inp x, = inp
g_sm, = grads g_sm, = grads
sm = self(x) sm, = outputs
return [GpuDnnSoftmaxGrad( return [GpuDnnSoftmaxGrad(
self.algo, self.algo,
self.mode self.mode
...@@ -1730,10 +1730,10 @@ class GpuDnnBatchNorm(DnnBase): ...@@ -1730,10 +1730,10 @@ class GpuDnnBatchNorm(DnnBase):
output_types.append(scale.type()) output_types.append(scale.type())
return Apply(self, inputs, output_types) return Apply(self, inputs, output_types)
def grad(self, inputs, grads): def L_op(self, inputs, outputs, grads):
x, scale, bias, epsilon, running_average_factor = inputs[:5] x, scale, bias, epsilon, running_average_factor = inputs[:5]
dy = grads[0] dy = grads[0]
_, x_mean, x_invstd = self(*inputs)[:3] _, x_mean, x_invstd = outputs[:3]
disconnected_outputs = [ disconnected_outputs = [
DisconnectedType()(), # epsilon DisconnectedType()(), # epsilon
DisconnectedType()()] # running_average_factor DisconnectedType()()] # running_average_factor
......
...@@ -431,10 +431,10 @@ class AbstractBatchNormTrain(Op): ...@@ -431,10 +431,10 @@ class AbstractBatchNormTrain(Op):
output_types.append(scale.type()) output_types.append(scale.type())
return Apply(self, inputs, output_types) return Apply(self, inputs, output_types)
def grad(self, inputs, grads): def L_op(self, inputs, outputs, grads):
x, scale, bias, epsilon, running_average_factor = inputs[:5] x, scale, bias, epsilon, running_average_factor = inputs[:5]
dy = grads[0] dy = grads[0]
_, x_mean, x_invstd = self(*inputs)[:3] _, x_mean, x_invstd = outputs[:3]
disconnected_outputs = [ disconnected_outputs = [
theano.gradient.DisconnectedType()(), # epsilon theano.gradient.DisconnectedType()(), # epsilon
theano.gradient.DisconnectedType()()] # running_average_factor theano.gradient.DisconnectedType()()] # running_average_factor
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论