1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/open-mmlab-mmrazor

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
test_op.py 5.5 КБ
Копировать Редактировать Исходные данные Просмотреть построчно История
pppppM Отправлено 3 лет назад ef1637e
# Copyright (c) OpenMMLab. All rights reserved.
import torch
from mmrazor.models.builder import OPS
def test_common_ops():
tensor = torch.randn(16, 16, 32, 32)
# test stride != 1
identity_cfg = dict(
type='Identity', in_channels=16, out_channels=16, stride=2)
op = OPS.build(identity_cfg)
# test forward
outputs = op(tensor)
assert outputs.size(1) == 16 and outputs.size(2) == 16
# test stride == 1
identity_cfg = dict(
type='Identity', in_channels=16, out_channels=16, stride=1)
op = OPS.build(identity_cfg)
# test forward
outputs = op(tensor)
assert outputs.size(1) == 16 and outputs.size(2) == 32
# test in_channels != out_channels
identity_cfg = dict(
type='Identity', in_channels=8, out_channels=16, stride=1)
op = OPS.build(identity_cfg)
# test forward
outputs = op(tensor[:, :8])
assert outputs.size(1) == 16 and outputs.size(2) == 32
def test_shuffle_series():
tensor = torch.randn(16, 16, 32, 32)
# test ShuffleBlock_7x7
shuffle_block_7x7 = dict(
type='ShuffleBlock',
in_channels=16,
out_channels=16,
kernel_size=7,
stride=1)
op = OPS.build(shuffle_block_7x7)
# test forward
outputs = op(tensor)
assert outputs.size(1) == 16 and outputs.size(2) == 32
# test ShuffleBlock_5x5
shuffle_block_5x5 = dict(
type='ShuffleBlock',
in_channels=16,
out_channels=16,
kernel_size=5,
stride=1)
op = OPS.build(shuffle_block_5x5)
# test forward
outputs = op(tensor)
assert outputs.size(1) == 16 and outputs.size(2) == 32
# test ShuffleBlock_3x3
shuffle_block_3x3 = dict(
type='ShuffleBlock',
in_channels=16,
out_channels=16,
kernel_size=3,
stride=1)
op = OPS.build(shuffle_block_3x3)
# test forward
outputs = op(tensor)
assert outputs.size(1) == 16 and outputs.size(2) == 32
# test ShuffleXception
shuffle_xception = dict(
type='ShuffleXception', in_channels=16, out_channels=16, stride=1)
op = OPS.build(shuffle_xception)
# test forward
outputs = op(tensor)
assert outputs.size(1) == 16 and outputs.size(2) == 32
def test_mobilenet_series():
tensor = torch.randn(16, 16, 32, 32)
kernel_sizes = (3, 5, 7)
expand_ratios = (3, 6)
strides = (1, 2)
se_cfg_1 = dict(
ratio=4,
act_cfg=(dict(type='HSwish'),
dict(
type='HSigmoid',
bias=3,
divisor=6,
min_value=0,
max_value=1)))
se_cfgs = (None, se_cfg_1)
drop_path_rates = (0, 0.2)
with_cps = (True, False)
for kernel_size in kernel_sizes:
for expand_ratio in expand_ratios:
for stride in strides:
for se_cfg in se_cfgs:
for drop_path_rate in drop_path_rates:
for with_cp in with_cps:
op_cfg = dict(
type='MBBlock',
in_channels=16,
out_channels=16,
kernel_size=kernel_size,
expand_ratio=expand_ratio,
se_cfg=se_cfg,
drop_path_rate=drop_path_rate,
with_cp=with_cp,
stride=stride)
op = OPS.build(op_cfg)
# test forward
outputs = op(tensor)
assert outputs.size(1) == 16 and outputs.size(
2) == 32 // stride
def test_darts_series():
tensor = torch.randn(16, 16, 32, 32)
# test avg pool bn
avg_pool_bn = dict(
type='DartsPoolBN',
in_channels=16,
out_channels=16,
kernel_size=3,
pool_type='avg',
stride=1)
op = OPS.build(avg_pool_bn)
# test forward
outputs = op(tensor)
assert outputs.size(1) == 16 and outputs.size(2) == 32
# test max pool bn
max_pool_bn = dict(
type='DartsPoolBN',
in_channels=16,
out_channels=16,
kernel_size=3,
pool_type='max',
stride=1)
op = OPS.build(max_pool_bn)
# test forward
outputs = op(tensor)
assert outputs.size(1) == 16 and outputs.size(2) == 32
# test DartsSepConv
sep_conv = dict(
type='DartsSepConv',
in_channels=16,
out_channels=16,
kernel_size=3,
stride=1)
op = OPS.build(sep_conv)
# test forward
outputs = op(tensor)
assert outputs.size(1) == 16 and outputs.size(2) == 32
# test DartsSepConv
sep_conv = dict(
type='DartsSepConv',
in_channels=16,
out_channels=16,
kernel_size=3,
stride=1)
op = OPS.build(sep_conv)
# test forward
outputs = op(tensor)
assert outputs.size(1) == 16 and outputs.size(2) == 32
# test DartsDilConv
dil_conv = dict(
type='DartsDilConv',
in_channels=16,
out_channels=16,
kernel_size=3,
stride=1)
op = OPS.build(dil_conv)
# test forward
outputs = op(tensor)
assert outputs.size(1) == 16 and outputs.size(2) == 32
# test DartsSkipConnect
skip_connect = dict(
type='DartsSkipConnect', in_channels=16, out_channels=16, stride=1)
op = OPS.build(skip_connect)
# test forward
outputs = op(tensor)
assert outputs.size(1) == 16 and outputs.size(2) == 32

Комментарий ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://gitlife.ru/oschina-mirror/open-mmlab-mmrazor.git
git@gitlife.ru:oschina-mirror/open-mmlab-mmrazor.git
oschina-mirror
open-mmlab-mmrazor
open-mmlab-mmrazor
v0.3.0