Skip to content

Commit fd13584

Browse files
authored
asymmetric_kernel (PaddlePaddle#969)
* asymmetric_kernel * asymmetric_kernel
1 parent f895aeb commit fd13584

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

paddleslim/nas/ofa/layers.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,10 @@ def __init__(self,
214214
setattr(self, name, param)
215215

216216
def get_active_filter(self, in_nc, out_nc, kernel_size):
217+
### Unsupport for asymmetric kernels
218+
if self._kernel_size[0] != self._kernel_size[1]:
219+
return self.weight[:out_nc, :in_nc, :, :]
220+
217221
start, end = compute_start_end(self._kernel_size[0], kernel_size)
218222
### if NOT transform kernel, intercept a center filter with kernel_size from largest filter
219223
filters = self.weight[:out_nc, :in_nc, start:end, start:end]
@@ -288,9 +292,14 @@ def forward(self, input, kernel_size=None, expand_ratio=None, channel=None):
288292
out_nc = int(channel)
289293
else:
290294
out_nc = self._out_channels
295+
291296
ks = int(self._kernel_size[0]) if kernel_size == None else int(
292297
kernel_size)
293298

299+
if kernel_size is not None and self._kernel_size[
300+
0] != self._kernel_size[1]:
301+
_logger.error("Searching for asymmetric kernels is NOT supported")
302+
294303
groups, weight_in_nc, weight_out_nc = self.get_groups_in_out_nc(in_nc,
295304
out_nc)
296305

@@ -518,6 +527,9 @@ def __init__(self,
518527
setattr(self, name, param)
519528

520529
def get_active_filter(self, in_nc, out_nc, kernel_size):
530+
### Unsupport for asymmetric kernels
531+
if self._kernel_size[0] != self._kernel_size[1]:
532+
return self.weight[:out_nc, :in_nc, :, :]
521533
start, end = compute_start_end(self._kernel_size[0], kernel_size)
522534
filters = self.weight[:in_nc, :out_nc, start:end, start:end]
523535
if self.transform_kernel != False and kernel_size < self._kernel_size[
@@ -600,6 +612,10 @@ def forward(self,
600612
ks = int(self._kernel_size[0]) if kernel_size == None else int(
601613
kernel_size)
602614

615+
if kernel_size is not None and self._kernel_size[
616+
0] != self._kernel_size[1]:
617+
_logger.error("Searching for asymmetric kernels is NOT supported")
618+
603619
groups, weight_in_nc, weight_out_nc = self.get_groups_in_out_nc(in_nc,
604620
out_nc)
605621

paddleslim/nas/ofa/layers_old.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,9 @@ def __init__(self,
213213
setattr(self, name, param)
214214

215215
def get_active_filter(self, in_nc, out_nc, kernel_size):
216+
### Unsupport for asymmetric kernels
217+
if self._filter_size[0] != self._filter_size[1]:
218+
return self.weight[:out_nc, :in_nc, :, :]
216219
start, end = compute_start_end(self._filter_size[0], kernel_size)
217220
### if NOT transform kernel, intercept a center filter with kernel_size from largest filter
218221
filters = self.weight[:out_nc, :in_nc, start:end, start:end]
@@ -285,6 +288,10 @@ def forward(self, input, kernel_size=None, expand_ratio=None, channel=None):
285288
ks = int(self._filter_size[0]) if kernel_size == None else int(
286289
kernel_size)
287290

291+
if kernel_size is not None and self._filter_size[
292+
0] != self._filter_size[1]:
293+
_logger.error("Searching for asymmetric kernels is NOT supported")
294+
288295
groups, weight_in_nc, weight_out_nc = self.get_groups_in_out_nc(in_nc,
289296
out_nc)
290297

@@ -513,6 +520,9 @@ def __init__(self,
513520
setattr(self, name, param)
514521

515522
def get_active_filter(self, in_nc, out_nc, kernel_size):
523+
### Unsupport for asymmetric kernels
524+
if self._filter_size[0] != self._filter_size[1]:
525+
return self.weight[:out_nc, :in_nc, :, :]
516526
start, end = compute_start_end(self._filter_size[0], kernel_size)
517527
filters = self.weight[:in_nc, :out_nc, start:end, start:end]
518528
if self.transform_kernel != False and kernel_size < self._filter_size[
@@ -584,6 +594,10 @@ def forward(self, input, kernel_size=None, expand_ratio=None, channel=None):
584594
ks = int(self._filter_size[0]) if kernel_size == None else int(
585595
kernel_size)
586596

597+
if kernel_size is not None and self._filter_size[
598+
0] != self._filter_size[1]:
599+
_logger.error("Searching for asymmetric kernels is NOT supported")
600+
587601
groups, weight_in_nc, weight_out_nc = self.get_groups_in_out_nc(in_nc,
588602
out_nc)
589603

0 commit comments

Comments
 (0)