提交 3d00f2b4 authored 作者: Arnaud Bergeron's avatar Arnaud Bergeron

Add gradient for GpuConvDnn

上级 740295e2
......@@ -259,6 +259,26 @@ class GpuDnnConv(GpuDnnConvBase):
path_flag = 'CUDNN_CONVOLUTION_FWD'
conv_op ='cudnnConvolutionForward'
def grad(self, inp, grads):
img, kerns = inp
top, = grads
d_img = GpuDnnConvGradI(self.border_mode, self.conv_mode)(kerns, top)
d_kerns = GpuDnnConvGradW(self.border_mode, self.conv_mode)(img, top)
return d_img, d_kerns
class GpuDnnConvGradW(GpuDnnConvBase):
descriptors = ('tensor4d', 'tensor4d', 'filter')
path_flag = 'CUDNN_CONVOLUTION_WEIGHT_GRAD'
conv_op = 'cudnnConvolutionBackwardFilter'
class GpuDnnConvGradI(GpuDnnConvBase):
descriptors = ('filter', 'tensor4d', 'tensor4d')
path_flag = 'CUDNN_CONVOLUTION_DATA_GRAD'
conv_op = 'cudnnConvolutionBackwardData'
from theano.sandbox.cuda.opt import (local_optimizer, gpu_contiguous,
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论