From 811b483e3021a699e759a57ff367f5e73e7f77d5 Mon Sep 17 00:00:00 2001 From: gaotingquan Date: Wed, 8 Feb 2023 15:07:32 +0000 Subject: [PATCH] fix: set dtype in paddle.to_tensor() --- ppcls/arch/backbone/model_zoo/convnext.py | 4 +- ppcls/arch/backbone/model_zoo/dsnet.py | 2 +- .../backbone/model_zoo/efficientnet_v2.py | 2 +- .../arch/backbone/model_zoo/foundation_vit.py | 54 ++++++++++++------- ppcls/arch/backbone/model_zoo/tnt.py | 2 +- ppcls/arch/backbone/model_zoo/van.py | 2 +- .../backbone/model_zoo/vision_transformer.py | 2 +- 7 files changed, 41 insertions(+), 27 deletions(-) diff --git a/ppcls/arch/backbone/model_zoo/convnext.py b/ppcls/arch/backbone/model_zoo/convnext.py index 13e73de22..47ad8c687 100644 --- a/ppcls/arch/backbone/model_zoo/convnext.py +++ b/ppcls/arch/backbone/model_zoo/convnext.py @@ -49,7 +49,7 @@ def drop_path(x, drop_prob=0., training=False): """ if drop_prob == 0. or not training: return x - keep_prob = paddle.to_tensor(1 - drop_prob) + keep_prob = paddle.to_tensor(1 - drop_prob, dtype=x.dtype) shape = (paddle.shape(x)[0], ) + (1, ) * (x.ndim - 1) random_tensor = keep_prob + paddle.rand(shape, dtype=x.dtype) random_tensor = paddle.floor(random_tensor) # binarize @@ -279,4 +279,4 @@ def ConvNeXt_large_384(pretrained=False, use_ssld=False, **kwargs): depths=[3, 3, 27, 3], dims=[192, 384, 768, 1536], **kwargs) _load_pretrained( pretrained, model, MODEL_URLS["ConvNeXt_large_384"], use_ssld=use_ssld) - return model \ No newline at end of file + return model diff --git a/ppcls/arch/backbone/model_zoo/dsnet.py b/ppcls/arch/backbone/model_zoo/dsnet.py index 57385d4eb..4b5a25186 100644 --- a/ppcls/arch/backbone/model_zoo/dsnet.py +++ b/ppcls/arch/backbone/model_zoo/dsnet.py @@ -102,7 +102,7 @@ def drop_path(x, drop_prob=0., training=False): """ if drop_prob == 0. or not training: return x - keep_prob = paddle.to_tensor(1 - drop_prob) + keep_prob = paddle.to_tensor(1 - drop_prob, dtype=x.dtype) shape = (paddle.shape(x)[0], ) + (1, ) * (x.ndim - 1) random_tensor = keep_prob + paddle.rand(shape, dtype=x.dtype) random_tensor = paddle.floor(random_tensor) # binarize diff --git a/ppcls/arch/backbone/model_zoo/efficientnet_v2.py b/ppcls/arch/backbone/model_zoo/efficientnet_v2.py index a863c9011..4a36c5a56 100644 --- a/ppcls/arch/backbone/model_zoo/efficientnet_v2.py +++ b/ppcls/arch/backbone/model_zoo/efficientnet_v2.py @@ -365,7 +365,7 @@ def drop_path(x, training=False, survival_prob=1.0): if not training: return x shape = (paddle.shape(x)[0], ) + (1, ) * (x.ndim - 1) - keep_prob = paddle.to_tensor(survival_prob) + keep_prob = paddle.to_tensor(survival_prob, dtype=x.dtype) random_tensor = keep_prob + paddle.rand(shape).astype(x.dtype) random_tensor = paddle.floor(random_tensor) # binarize output = x.divide(keep_prob) * random_tensor diff --git a/ppcls/arch/backbone/model_zoo/foundation_vit.py b/ppcls/arch/backbone/model_zoo/foundation_vit.py index 61e36371e..b71bb8e2d 100644 --- a/ppcls/arch/backbone/model_zoo/foundation_vit.py +++ b/ppcls/arch/backbone/model_zoo/foundation_vit.py @@ -26,19 +26,32 @@ from paddle.nn.initializer import TruncatedNormal, Constant, Normal from ....utils.save_load import load_dygraph_pretrain, load_dygraph_pretrain_from_url MODEL_URLS = { - "CLIP_vit_base_patch32_224": "https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/foundation_models/CLIP_vit_base_patch32_224.pdparams", - "CLIP_vit_base_patch16_224": "https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/foundation_models/CLIP_vit_base_patch16_224.pdparams", - "CLIP_vit_large_patch14_336": "https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/foundation_models/CLIP_vit_large_patch14_336.pdparams", - "CLIP_vit_large_patch14_224": "https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/foundation_models/CLIP_vit_large_patch14_224.pdparams", - "BEiTv2_vit_base_patch16_224": "https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/foundation_models/BEiTv2_vit_base_patch16_224.pdparams", - "BEiTv2_vit_large_patch16_224": "https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/foundation_models/BEiTv2_vit_large_patch16_224.pdparams", - "CAE_vit_base_patch16_224": "https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/foundation_models/CAE_vit_base_patch16_224.pdparams", - 'EVA_vit_huge_patch14':"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/foundation_models/EVA_vit_huge_patch14.pdparams", - "MOCOV3_vit_small": "https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/foundation_models/MOCOV3_vit_small.pdparams", - "MOCOV3_vit_base": "https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/foundation_models/MOCOV3_vit_base.pdparams", - "MAE_vit_huge_patch14": "https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/foundation_models/MAE_vit_huge_patch14.pdparams", - "MAE_vit_large_patch16": "https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/foundation_models/MAE_vit_large_patch16.pdparams", - "MAE_vit_base_patch16": "https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/foundation_models/MAE_vit_base_patch16.pdparams", + "CLIP_vit_base_patch32_224": + "https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/foundation_models/CLIP_vit_base_patch32_224.pdparams", + "CLIP_vit_base_patch16_224": + "https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/foundation_models/CLIP_vit_base_patch16_224.pdparams", + "CLIP_vit_large_patch14_336": + "https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/foundation_models/CLIP_vit_large_patch14_336.pdparams", + "CLIP_vit_large_patch14_224": + "https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/foundation_models/CLIP_vit_large_patch14_224.pdparams", + "BEiTv2_vit_base_patch16_224": + "https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/foundation_models/BEiTv2_vit_base_patch16_224.pdparams", + "BEiTv2_vit_large_patch16_224": + "https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/foundation_models/BEiTv2_vit_large_patch16_224.pdparams", + "CAE_vit_base_patch16_224": + "https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/foundation_models/CAE_vit_base_patch16_224.pdparams", + 'EVA_vit_huge_patch14': + "https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/foundation_models/EVA_vit_huge_patch14.pdparams", + "MOCOV3_vit_small": + "https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/foundation_models/MOCOV3_vit_small.pdparams", + "MOCOV3_vit_base": + "https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/foundation_models/MOCOV3_vit_base.pdparams", + "MAE_vit_huge_patch14": + "https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/foundation_models/MAE_vit_huge_patch14.pdparams", + "MAE_vit_large_patch16": + "https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/foundation_models/MAE_vit_large_patch16.pdparams", + "MAE_vit_base_patch16": + "https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/foundation_models/MAE_vit_base_patch16.pdparams", } __all__ = list(MODEL_URLS.keys()) @@ -48,8 +61,8 @@ _model_diff = None _CLIP_diff = { 'add_layer_norm_before_encoder': [ - 'base_vit_patch32_224', 'base_vit_patch16_224', 'large_vit_patch14_336', - 'large_vit_patch14_224' + 'base_vit_patch32_224', 'base_vit_patch16_224', + 'large_vit_patch14_336', 'large_vit_patch14_224' ], 'add_relative_position_bias_in_msa': [], 'add_shared_rel_pos_bias': [], @@ -57,8 +70,8 @@ _CLIP_diff = { 'remove_cls_token': [], 'remove_abs_pos_emb': [], 'replace_mlp_GELU': [ - 'base_vit_patch32_224', 'base_vit_patch16_224', 'large_vit_patch14_336', - 'large_vit_patch14_224' + 'base_vit_patch32_224', 'base_vit_patch16_224', + 'large_vit_patch14_336', 'large_vit_patch14_224' ], 'head': { 'fc_norm': [], @@ -102,7 +115,8 @@ _BEiTv2_diff = { 'add_relative_position_bias_in_msa': ['base_vit_patch16_224', 'large_vit_patch16_224'], 'add_shared_rel_pos_bias': [], - 'add_mul_gamma_to_msa_mlp': ['base_vit_patch16_224', 'large_vit_patch16_224'], + 'add_mul_gamma_to_msa_mlp': + ['base_vit_patch16_224', 'large_vit_patch16_224'], 'remove_cls_token': [], 'remove_abs_pos_emb': ['base_vit_patch16_224', 'large_vit_patch16_224'], 'replace_mlp_GELU': [], @@ -175,7 +189,7 @@ def drop_path(x, drop_prob=0., training=False): """ if drop_prob == 0. or not training: return x - keep_prob = paddle.to_tensor(1 - drop_prob) + keep_prob = paddle.to_tensor(1 - drop_prob, dtype=x.dtype) shape = (paddle.shape(x)[0], ) + (1, ) * (x.ndim - 1) random_tensor = keep_prob + paddle.rand(shape).astype(x.dtype) random_tensor = paddle.floor(random_tensor) # binarize @@ -886,4 +900,4 @@ def CAE_vit_base_patch16_224(pretrained=False, use_ssld=False, **kwargs): **kwargs, ) _load_pretrained( pretrained, model, MODEL_URLS[model_name], use_ssld=use_ssld) - return model \ No newline at end of file + return model diff --git a/ppcls/arch/backbone/model_zoo/tnt.py b/ppcls/arch/backbone/model_zoo/tnt.py index 8d650085a..c313a1402 100644 --- a/ppcls/arch/backbone/model_zoo/tnt.py +++ b/ppcls/arch/backbone/model_zoo/tnt.py @@ -54,7 +54,7 @@ def drop_path(x, drop_prob=0., training=False): """ if drop_prob == 0. or not training: return x - keep_prob = paddle.to_tensor(1 - drop_prob) + keep_prob = paddle.to_tensor(1 - drop_prob, dtype=x.dtype) shape = (paddle.shape(x)[0], ) + (1, ) * (x.ndim - 1) random_tensor = paddle.add(keep_prob, paddle.rand(shape, dtype=x.dtype)) random_tensor = paddle.floor(random_tensor) # binarize diff --git a/ppcls/arch/backbone/model_zoo/van.py b/ppcls/arch/backbone/model_zoo/van.py index 887555c10..9aa4c4849 100644 --- a/ppcls/arch/backbone/model_zoo/van.py +++ b/ppcls/arch/backbone/model_zoo/van.py @@ -48,7 +48,7 @@ def drop_path(x, drop_prob=0., training=False): """ if drop_prob == 0. or not training: return x - keep_prob = paddle.to_tensor(1 - drop_prob) + keep_prob = paddle.to_tensor(1 - drop_prob, dtype=x.dtype) shape = (paddle.shape(x)[0], ) + (1, ) * (x.ndim - 1) random_tensor = keep_prob + paddle.rand(shape, dtype=x.dtype) random_tensor = paddle.floor(random_tensor) # binarize diff --git a/ppcls/arch/backbone/model_zoo/vision_transformer.py b/ppcls/arch/backbone/model_zoo/vision_transformer.py index acecf61f1..fbec1fcb4 100644 --- a/ppcls/arch/backbone/model_zoo/vision_transformer.py +++ b/ppcls/arch/backbone/model_zoo/vision_transformer.py @@ -60,7 +60,7 @@ def drop_path(x, drop_prob=0., training=False): """ if drop_prob == 0. or not training: return x - keep_prob = paddle.to_tensor(1 - drop_prob) + keep_prob = paddle.to_tensor(1 - drop_prob, dtype=x.dtype) shape = (paddle.shape(x)[0], ) + (1, ) * (x.ndim - 1) random_tensor = keep_prob + paddle.rand(shape).astype(x.dtype) random_tensor = paddle.floor(random_tensor) # binarize