mmclassification/tests/test_neck.py
mzr1996 8128900a12
GlabelAveragePooling support 1d, 2d and 3d by param, and add neck test (#236)
* GlabelAveragePooling support 1d, 2d and 3d by param, and add neck test

* Imporve neck test

* Change 'mode' attribute in GAP to 'dim', and add docstring
2021-05-10 15:00:50 +08:00

39 lines
967 B
Python

import pytest
import torch
from mmcls.models.necks import GlobalAveragePooling
def test_gap_neck():
# test 1d gap_neck
neck = GlobalAveragePooling(dim=1)
# batch_size, num_features, feature_size
fake_input = torch.rand(1, 16, 24)
output = neck(fake_input)
# batch_size, num_features
assert output.shape == (1, 16)
# test 1d gap_neck
neck = GlobalAveragePooling(dim=2)
# batch_size, num_features, feature_size(2)
fake_input = torch.rand(1, 16, 24, 24)
output = neck(fake_input)
# batch_size, num_features
assert output.shape == (1, 16)
# test 1d gap_neck
neck = GlobalAveragePooling(dim=3)
# batch_size, num_features, feature_size(3)
fake_input = torch.rand(1, 16, 24, 24, 5)
output = neck(fake_input)
# batch_size, num_features
assert output.shape == (1, 16)
with pytest.raises(AssertionError):
# dim must in [1, 2, 3]
GlobalAveragePooling(dim='other')