提交 7cc4e783 authored 作者: Nicolas Ballas's avatar Nicolas Ballas 提交者: Pascal Lamblin

small updates

上级 a9647f76
...@@ -120,7 +120,7 @@ class BaseAbstractConv2d(Op): ...@@ -120,7 +120,7 @@ class BaseAbstractConv2d(Op):
FIXME FIXME
""" """
check_broadcast = False check_broadcast = False
__props__ = ('border_mode', 'subsample') __props__ = ('border_mode', 'subsample', 'filter_flip', 'imshp', 'kshp', 'bsize')
def __init__(self, def __init__(self,
imshp=None, kshp=None, bsize=None, imshp=None, kshp=None, bsize=None,
...@@ -138,7 +138,6 @@ class BaseAbstractConv2d(Op): ...@@ -138,7 +138,6 @@ class BaseAbstractConv2d(Op):
'"valid", "full", "half", an integer or a pair of' '"valid", "full", "half", an integer or a pair of'
' integers'.format(border_mode)) ' integers'.format(border_mode))
### FIXME Check that values are correct
self.imshp = imshp self.imshp = imshp
self.kshp = kshp self.kshp = kshp
self.bsize = bsize self.bsize = bsize
...@@ -149,12 +148,6 @@ class BaseAbstractConv2d(Op): ...@@ -149,12 +148,6 @@ class BaseAbstractConv2d(Op):
raise ValueError("subsample must have two elements") raise ValueError("subsample must have two elements")
self.subsample = subsample self.subsample = subsample
def __str__(self):
return '%s{%s, %s}' % (
self.__class__.__name__,
self.border_mode,
str(self.subsample))
def flops(self, inp, outp): def flops(self, inp, outp):
""" Useful with the hack in profilemode to print the MFlops""" """ Useful with the hack in profilemode to print the MFlops"""
# if the output shape is correct, then this gives the correct # if the output shape is correct, then this gives the correct
...@@ -315,8 +308,6 @@ class AbstractConv2d_gradInputs(BaseAbstractConv2d): ...@@ -315,8 +308,6 @@ class AbstractConv2d_gradInputs(BaseAbstractConv2d):
broadcastable = [topgrad.type.broadcastable[0], broadcastable = [topgrad.type.broadcastable[0],
kern.type.broadcastable[1], kern.type.broadcastable[1],
False, False] False, False]
output = kern.type.__class__(dtype=kern.type.dtype,
broadcastable=broadcastable)()
output = kern.type.clone(broadcastable=broadcastable)() output = kern.type.clone(broadcastable=broadcastable)()
return Apply(self, [kern, topgrad, shape], [output]) return Apply(self, [kern, topgrad, shape], [output])
...@@ -345,9 +336,7 @@ class AbstractConv2d_gradInputs(BaseAbstractConv2d): ...@@ -345,9 +336,7 @@ class AbstractConv2d_gradInputs(BaseAbstractConv2d):
### move to Gpu optimization ### move to Gpu optimization
### Do not replace the AbstractOpt only the inputs ### Do not replace the AbstractOpt only the inputs
### Abstract Ops is replaced layer by device_specialized opt ### Abstract Ops is replaced layer by device_specialized opt
@local_optimizer([gpu_from_host, AbstractConv2d, @local_optimizer([gpu_from_host, BaseAbstractConv2d])
AbstractConv2d_gradWeights,
AbstractConv2d_gradInputs])
def local_conv2d_gpu_conv(node): def local_conv2d_gpu_conv(node):
""" """
gpu_from_host(AbstractConv) -> AbstractConv(gpu_from_host) gpu_from_host(AbstractConv) -> AbstractConv(gpu_from_host)
...@@ -398,9 +387,7 @@ register_gpu()(local_conv2d_gpu_conv) ...@@ -398,9 +387,7 @@ register_gpu()(local_conv2d_gpu_conv)
### Call dnn conv class directly ### Call dnn conv class directly
@local_optimizer([AbstractConv2d, @local_optimizer([BaseAbstractConv2d])
AbstractConv2d_gradWeights,
AbstractConv2d_gradInputs])
def local_conv2d_cudnn(node): def local_conv2d_cudnn(node):
inp1 = node.inputs[0] inp1 = node.inputs[0]
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论