diff --git a/ppcls/modeling/architectures/__init__.py b/ppcls/modeling/architectures/__init__.py index f29ed2cdd..3c166ebb3 100644 --- a/ppcls/modeling/architectures/__init__.py +++ b/ppcls/modeling/architectures/__init__.py @@ -23,7 +23,7 @@ from .se_resnet_vd import SE_ResNet18_vd, SE_ResNet34_vd, SE_ResNet50_vd, SE_Res from .se_resnext_vd import SE_ResNeXt50_vd_32x4d, SE_ResNeXt50_vd_32x4d, SENet154_vd from .se_resnext import SE_ResNeXt50_32x4d, SE_ResNeXt101_32x4d, SE_ResNeXt152_64x4d from .dpn import DPN68, DPN92, DPN98, DPN107, DPN131 -from .densenet import DenseNet121 +from .densenet import DenseNet121, DenseNet161, DenseNet169, DenseNet201, DenseNet264 from .hrnet import HRNet_W18_C, HRNet_W30_C, HRNet_W32_C, HRNet_W40_C, HRNet_W44_C, HRNet_W48_C, HRNet_W60_C, HRNet_W64_C, SE_HRNet_W18_C, SE_HRNet_W30_C, SE_HRNet_W32_C, SE_HRNet_W40_C, SE_HRNet_W44_C, SE_HRNet_W48_C, SE_HRNet_W60_C, SE_HRNet_W64_C from .efficientnet import EfficientNetB0, EfficientNetB1, EfficientNetB2, EfficientNetB3, EfficientNetB4, EfficientNetB5, EfficientNetB6, EfficientNetB7 from .resnest import ResNeSt50_fast_1s1x64d, ResNeSt50 diff --git a/ppcls/modeling/architectures/efficientnet.py b/ppcls/modeling/architectures/efficientnet.py index b0a299113..683cf814f 100644 --- a/ppcls/modeling/architectures/efficientnet.py +++ b/ppcls/modeling/architectures/efficientnet.py @@ -243,11 +243,12 @@ inp_shape = { def _drop_connect(inputs, prob, is_test): if is_test: return inputs + keep_prob = 1.0 - prob inputs_shape = paddle.shape(inputs) random_tensor = keep_prob + paddle.rand(shape=[inputs_shape[0], 1, 1, 1]) binary_tensor = paddle.floor(random_tensor) - output = inputs / keep_prob * binary_tensor + output = paddle.multiply(inputs, binary_tensor) / keep_prob return output @@ -507,7 +508,8 @@ class SEBlock(nn.Layer): x = self._pool(inputs) x = self._conv1(x) x = self._conv2(x) - return paddle.multiply(inputs, x) + out = paddle.multiply(inputs, x) + return out class MbConvBlock(nn.Layer): @@ -572,11 +574,13 @@ class MbConvBlock(nn.Layer): if self.expand_ratio != 1: x = self._ecn(x) x = F.swish(x) + x = self._dcn(x) x = F.swish(x) if self.has_se: x = self._se(x) x = self._pcn(x) + if self.id_skip and \ self.block_args.stride == 1 and \ self.block_args.input_filters == self.block_args.output_filters: diff --git a/tools/export_model.py b/tools/export_model.py index a2bebb8d1..661b6b28a 100644 --- a/tools/export_model.py +++ b/tools/export_model.py @@ -65,11 +65,12 @@ def main(): net = architectures.__dict__[args.model] model = Net(net, to_static, args.class_dim) - load_dygraph_pretrain( model.pre_net, path=args.pretrained_model, load_static_weights=args.load_static_weights) + + model.eval() paddle.jit.save(model, args.output_path)