47 lines
1.5 KiB
Python
47 lines
1.5 KiB
Python
import paddle
|
|
import paddle.nn as nn
|
|
from paddle.nn import Sigmoid
|
|
from paddle.nn import Tanh
|
|
from ..model_zoo.efficientnet import EfficientNetB3, _load_pretrained
|
|
|
|
MODEL_URLS = {
|
|
"EfficientNetB3_watermark":
|
|
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/EfficientNetB3_watermark_pretrained.pdparams"
|
|
}
|
|
|
|
__all__ = list(MODEL_URLS.keys())
|
|
|
|
|
|
def EfficientNetB3_watermark(padding_type='DYNAMIC',
|
|
override_params={"batch_norm_epsilon": 0.00001},
|
|
use_se=True,
|
|
pretrained=False,
|
|
use_ssld=False,
|
|
**kwargs):
|
|
def replace_function(_fc, pattern):
|
|
classifier = nn.Sequential(
|
|
# 1536 is the orginal in_features
|
|
nn.Linear(
|
|
in_features=1536, out_features=625),
|
|
nn.ReLU(), # ReLu to be the activation function
|
|
nn.Dropout(p=0.3),
|
|
nn.Linear(
|
|
in_features=625, out_features=256),
|
|
nn.ReLU(),
|
|
nn.Linear(
|
|
in_features=256, out_features=2), )
|
|
return classifier
|
|
|
|
pattern = "_fc"
|
|
model = EfficientNetB3(
|
|
padding_type=padding_type,
|
|
override_params=override_params,
|
|
use_se=True,
|
|
pretrained=False,
|
|
use_ssld=False,
|
|
**kwargs)
|
|
model.upgrade_sublayer(pattern, replace_function)
|
|
_load_pretrained(pretrained, model, MODEL_URLS["EfficientNetB3_watermark"],
|
|
use_ssld)
|
|
return model
|