codingutf8 2022 the huggingface inc team licensed under the apache license version 2 0 the license you may not use this file except in compliance with the license you may obtain a copy of the license at http www apache orglicenseslicense2 0 unless required by applicable law or agreed to in writing software distributed under the license is distributed on an as is basis without warranties or conditions of any kind either express or implied see the license for the specific language governing permissions and limitations under the license efficientformer model configuration from typing import list from configurationutils import pretrainedconfig from utils import logging logger logging getloggername efficientformerpretrainedconfigarchivemap snapresearchefficientformerl1300 https huggingface cosnapresearchefficientformerl1300resolvemainconfig json class efficientformerconfigpretrainedconfig r this is the configuration class to store the configuration of an efficientformermodel it is used to instantiate an efficientformer model according to the specified arguments defining the model architecture instantiating a configuration with the defaults will yield a similar configuration to that of the efficientformer snapresearchefficientformerl1https huggingface cosnapresearchefficientformerl1 architecture configuration objects inherit from pretrainedconfig and can be used to control the model outputs read the documentation from pretrainedconfig for more information args depths listint optional defaults to 3 2 6 4 depth of each stage hiddensizes listint optional defaults to 48 96 224 448 dimensionality of each stage downsamples listbool optional defaults to true true true true whether or not to downsample inputs between two stages dim int optional defaults to 448 number of channels in meta3d layers keydim int optional defaults to 32 the size of the key in meta3d block attentionratio int optional defaults to 4 ratio of the dimension of the query and value to the dimension of the key in msha block resolution int optional defaults to 7 size of each patch numhiddenlayers int optional defaults to 5 number of hidden layers in the transformer encoder numattentionheads int optional defaults to 8 number of attention heads for each attention layer in the 3d metablock mlpexpansionratio int optional defaults to 4 ratio of size of the hidden dimensionality of an mlp to the dimensionality of its input hiddendropoutprob float optional defaults to 0 1 the dropout probability for all fully connected layers in the embeddings and encoder patchsize int optional defaults to 16 the size resolution of each patch numchannels int optional defaults to 3 the number of input channels poolsize int optional defaults to 3 kernel size of pooling layers downsamplepatchsize int optional defaults to 3 the size of patches in downsampling layers downsamplestride int optional defaults to 2 the stride of convolution kernels in downsampling layers downsamplepad int optional defaults to 1 padding in downsampling layers droppathrate int optional defaults to 0 rate at which to increase dropout probability in droppath nummeta3dblocks int optional defaults to 1 the number of 3d metablocks in the last stage distillation bool optional defaults to true whether to add a distillation head uselayerscale bool optional defaults to true whether to scale outputs from token mixers layerscaleinitvalue float optional defaults to 1e5 factor by which outputs from token mixers are scaled hiddenact str or function optional defaults to gelu the nonlinear activation function function or string in the encoder and pooler if string gelu relu selu and gelunew are supported initializerrange float optional defaults to 0 02 the standard deviation of the truncatednormalinitializer for initializing all weight matrices layernormeps float optional defaults to 1e12 the epsilon used by the layer normalization layers imagesize int optional defaults to 224 the size resolution of each image example python from transformers import efficientformerconfig efficientformermodel initializing a efficientformer efficientformerl1 style configuration configuration efficientformerconfig initializing a efficientformermodel with random weights from the efficientformerl3 style configuration model efficientformermodelconfiguration accessing the model configuration configuration model config modeltype efficientformer def init self depths listint 3 2 6 4 hiddensizes listint 48 96 224 448 downsamples listbool true true true true dim int 448 keydim int 32 attentionratio int 4 resolution int 7 numhiddenlayers int 5 numattentionheads int 8 mlpexpansionratio int 4 hiddendropoutprob float 0 0 patchsize int 16 numchannels int 3 poolsize int 3 downsamplepatchsize int 3 downsamplestride int 2 downsamplepad int 1 droppathrate float 0 0 nummeta3dblocks int 1 distillation bool true uselayerscale bool true layerscaleinitvalue float 1e5 hiddenact str gelu initializerrange float 0 02 layernormeps float 1e12 imagesize int 224 batchnormeps float 1e05 kwargs none super initkwargs self hiddenact hiddenact self hiddendropoutprob hiddendropoutprob self hiddensizes hiddensizes self numhiddenlayers numhiddenlayers self numattentionheads numattentionheads self initializerrange initializerrange self layernormeps layernormeps self patchsize patchsize self numchannels numchannels self depths depths self mlpexpansionratio mlpexpansionratio self downsamples downsamples self dim dim self keydim keydim self attentionratio attentionratio self resolution resolution self poolsize poolsize self downsamplepatchsize downsamplepatchsize self downsamplestride downsamplestride self downsamplepad downsamplepad self droppathrate droppathrate self nummeta3dblocks nummeta3dblocks self distillation distillation self uselayerscale uselayerscale self layerscaleinitvalue layerscaleinitvalue self imagesize imagesize self batchnormeps batchnormeps coding utf 8 2022 the huggingface inc team licensed under the apache license version 2 0 the license you may not use this file except in compliance with the license you may obtain a copy of the license at http www apache org licenses license 2 0 unless required by applicable law or agreed to in writing software distributed under the license is distributed on an as is basis without warranties or conditions of any kind either express or implied see the license for the specific language governing permissions and limitations under the license efficientformer model configuration this is the configuration class to store the configuration of an efficientformermodel it is used to instantiate an efficientformer model according to the specified arguments defining the model architecture instantiating a configuration with the defaults will yield a similar configuration to that of the efficientformer snap research efficientformer l1 https huggingface co snap research efficientformer l1 architecture configuration objects inherit from pretrainedconfig and can be used to control the model outputs read the documentation from pretrainedconfig for more information args depths list int optional defaults to 3 2 6 4 depth of each stage hidden_sizes list int optional defaults to 48 96 224 448 dimensionality of each stage downsamples list bool optional defaults to true true true true whether or not to downsample inputs between two stages dim int optional defaults to 448 number of channels in meta3d layers key_dim int optional defaults to 32 the size of the key in meta3d block attention_ratio int optional defaults to 4 ratio of the dimension of the query and value to the dimension of the key in msha block resolution int optional defaults to 7 size of each patch num_hidden_layers int optional defaults to 5 number of hidden layers in the transformer encoder num_attention_heads int optional defaults to 8 number of attention heads for each attention layer in the 3d metablock mlp_expansion_ratio int optional defaults to 4 ratio of size of the hidden dimensionality of an mlp to the dimensionality of its input hidden_dropout_prob float optional defaults to 0 1 the dropout probability for all fully connected layers in the embeddings and encoder patch_size int optional defaults to 16 the size resolution of each patch num_channels int optional defaults to 3 the number of input channels pool_size int optional defaults to 3 kernel size of pooling layers downsample_patch_size int optional defaults to 3 the size of patches in downsampling layers downsample_stride int optional defaults to 2 the stride of convolution kernels in downsampling layers downsample_pad int optional defaults to 1 padding in downsampling layers drop_path_rate int optional defaults to 0 rate at which to increase dropout probability in droppath num_meta3d_blocks int optional defaults to 1 the number of 3d metablocks in the last stage distillation bool optional defaults to true whether to add a distillation head use_layer_scale bool optional defaults to true whether to scale outputs from token mixers layer_scale_init_value float optional defaults to 1e 5 factor by which outputs from token mixers are scaled hidden_act str or function optional defaults to gelu the non linear activation function function or string in the encoder and pooler if string gelu relu selu and gelu_new are supported initializer_range float optional defaults to 0 02 the standard deviation of the truncated_normal_initializer for initializing all weight matrices layer_norm_eps float optional defaults to 1e 12 the epsilon used by the layer normalization layers image_size int optional defaults to 224 the size resolution of each image example python from transformers import efficientformerconfig efficientformermodel initializing a efficientformer efficientformer l1 style configuration configuration efficientformerconfig initializing a efficientformermodel with random weights from the efficientformer l3 style configuration model efficientformermodel configuration accessing the model configuration configuration model config
from typing import List

from ...configuration_utils import PretrainedConfig
from ...utils import logging


logger = logging.get_logger(__name__)

EFFICIENTFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP = {
    "snap-research/efficientformer-l1-300": (
        "https://huggingface.co/snap-research/efficientformer-l1-300/resolve/main/config.json"
    ),
}


class EfficientFormerConfig(PretrainedConfig):
    r

    model_type = "efficientformer"

    def __init__(
        self,
        depths: List[int] = [3, 2, 6, 4],
        hidden_sizes: List[int] = [48, 96, 224, 448],
        downsamples: List[bool] = [True, True, True, True],
        dim: int = 448,
        key_dim: int = 32,
        attention_ratio: int = 4,
        resolution: int = 7,
        num_hidden_layers: int = 5,
        num_attention_heads: int = 8,
        mlp_expansion_ratio: int = 4,
        hidden_dropout_prob: float = 0.0,
        patch_size: int = 16,
        num_channels: int = 3,
        pool_size: int = 3,
        downsample_patch_size: int = 3,
        downsample_stride: int = 2,
        downsample_pad: int = 1,
        drop_path_rate: float = 0.0,
        num_meta3d_blocks: int = 1,
        distillation: bool = True,
        use_layer_scale: bool = True,
        layer_scale_init_value: float = 1e-5,
        hidden_act: str = "gelu",
        initializer_range: float = 0.02,
        layer_norm_eps: float = 1e-12,
        image_size: int = 224,
        batch_norm_eps: float = 1e-05,
        **kwargs,
    ) -> None:
        super().__init__(**kwargs)

        self.hidden_act = hidden_act
        self.hidden_dropout_prob = hidden_dropout_prob
        self.hidden_sizes = hidden_sizes
        self.num_hidden_layers = num_hidden_layers
        self.num_attention_heads = num_attention_heads
        self.initializer_range = initializer_range
        self.layer_norm_eps = layer_norm_eps
        self.patch_size = patch_size
        self.num_channels = num_channels
        self.depths = depths
        self.mlp_expansion_ratio = mlp_expansion_ratio
        self.downsamples = downsamples
        self.dim = dim
        self.key_dim = key_dim
        self.attention_ratio = attention_ratio
        self.resolution = resolution
        self.pool_size = pool_size
        self.downsample_patch_size = downsample_patch_size
        self.downsample_stride = downsample_stride
        self.downsample_pad = downsample_pad
        self.drop_path_rate = drop_path_rate
        self.num_meta3d_blocks = num_meta3d_blocks
        self.distillation = distillation
        self.use_layer_scale = use_layer_scale
        self.layer_scale_init_value = layer_scale_init_value
        self.image_size = image_size
        self.batch_norm_eps = batch_norm_eps