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 mobilenetv1 model configuration from collections import ordereddict from typing import mapping from packaging import version from configurationutils import pretrainedconfig from onnx import onnxconfig from utils import logging logger logging getloggername mobilenetv1pretrainedconfigarchivemap googlemobilenetv11 0224 https huggingface cogooglemobilenetv11 0224resolvemainconfig json googlemobilenetv10 75192 https huggingface cogooglemobilenetv10 75192resolvemainconfig json see all mobilenetv1 models at https huggingface comodels filtermobilenetv1 class mobilenetv1configpretrainedconfig r this is the configuration class to store the configuration of a mobilenetv1model it is used to instantiate a mobilenetv1 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 mobilenetv1 googlemobilenetv11 0224https huggingface cogooglemobilenetv11 0224 architecture configuration objects inherit from pretrainedconfig and can be used to control the model outputs read the documentation from pretrainedconfig for more information args numchannels int optional defaults to 3 the number of input channels imagesize int optional defaults to 224 the size resolution of each image depthmultiplier float optional defaults to 1 0 shrinks or expands the number of channels in each layer default is 1 0 which starts the network with 32 channels this is sometimes also called alpha or width multiplier mindepth int optional defaults to 8 all layers will have at least this many channels hiddenact str or function optional defaults to relu6 the nonlinear activation function function or string in the transformer encoder and convolution layers tfpadding bool optional defaults to true whether to use tensorflow padding rules on the convolution layers classifierdropoutprob float optional defaults to 0 999 the dropout ratio for attached classifiers initializerrange float optional defaults to 0 02 the standard deviation of the truncatednormalinitializer for initializing all weight matrices layernormeps float optional defaults to 0 001 the epsilon used by the layer normalization layers example python from transformers import mobilenetv1config mobilenetv1model initializing a mobilenetv11 0224 style configuration configuration mobilenetv1config initializing a model from the mobilenetv11 0224 style configuration model mobilenetv1modelconfiguration accessing the model configuration configuration model config modeltype mobilenetv1 def init self numchannels3 imagesize224 depthmultiplier1 0 mindepth8 hiddenactrelu6 tfpaddingtrue classifierdropoutprob0 999 initializerrange0 02 layernormeps0 001 kwargs super initkwargs if depthmultiplier 0 raise valueerrordepthmultiplier must be greater than zero self numchannels numchannels self imagesize imagesize self depthmultiplier depthmultiplier self mindepth mindepth self hiddenact hiddenact self tfpadding tfpadding self classifierdropoutprob classifierdropoutprob self initializerrange initializerrange self layernormeps layernormeps class mobilenetv1onnxconfigonnxconfig torchonnxminimumversion version parse1 11 property def inputsself mappingstr mappingint str return ordereddictpixelvalues 0 batch property def outputsself mappingstr mappingint str if self task imageclassification return ordereddictlogits 0 batch else return ordereddictlasthiddenstate 0 batch pooleroutput 0 batch property def atolforvalidationself float return 1e4 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 mobilenetv1 model configuration see all mobilenetv1 models at https huggingface co models filter mobilenet_v1 this is the configuration class to store the configuration of a mobilenetv1model it is used to instantiate a mobilenetv1 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 mobilenetv1 google mobilenet_v1_1 0_224 https huggingface co google mobilenet_v1_1 0_224 architecture configuration objects inherit from pretrainedconfig and can be used to control the model outputs read the documentation from pretrainedconfig for more information args num_channels int optional defaults to 3 the number of input channels image_size int optional defaults to 224 the size resolution of each image depth_multiplier float optional defaults to 1 0 shrinks or expands the number of channels in each layer default is 1 0 which starts the network with 32 channels this is sometimes also called alpha or width multiplier min_depth int optional defaults to 8 all layers will have at least this many channels hidden_act str or function optional defaults to relu6 the non linear activation function function or string in the transformer encoder and convolution layers tf_padding bool optional defaults to true whether to use tensorflow padding rules on the convolution layers classifier_dropout_prob float optional defaults to 0 999 the dropout ratio for attached classifiers 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 0 001 the epsilon used by the layer normalization layers example python from transformers import mobilenetv1config mobilenetv1model initializing a mobilenet_v1_1 0_224 style configuration configuration mobilenetv1config initializing a model from the mobilenet_v1_1 0_224 style configuration model mobilenetv1model configuration accessing the model configuration configuration model config
from collections import OrderedDict
from typing import Mapping

from packaging import version

from ...configuration_utils import PretrainedConfig
from ...onnx import OnnxConfig
from ...utils import logging


logger = logging.get_logger(__name__)

MOBILENET_V1_PRETRAINED_CONFIG_ARCHIVE_MAP = {
    "google/mobilenet_v1_1.0_224": "https://huggingface.co/google/mobilenet_v1_1.0_224/resolve/main/config.json",
    "google/mobilenet_v1_0.75_192": "https://huggingface.co/google/mobilenet_v1_0.75_192/resolve/main/config.json",
    
}


class MobileNetV1Config(PretrainedConfig):
    r

    model_type = "mobilenet_v1"

    def __init__(
        self,
        num_channels=3,
        image_size=224,
        depth_multiplier=1.0,
        min_depth=8,
        hidden_act="relu6",
        tf_padding=True,
        classifier_dropout_prob=0.999,
        initializer_range=0.02,
        layer_norm_eps=0.001,
        **kwargs,
    ):
        super().__init__(**kwargs)

        if depth_multiplier <= 0:
            raise ValueError("depth_multiplier must be greater than zero.")

        self.num_channels = num_channels
        self.image_size = image_size
        self.depth_multiplier = depth_multiplier
        self.min_depth = min_depth
        self.hidden_act = hidden_act
        self.tf_padding = tf_padding
        self.classifier_dropout_prob = classifier_dropout_prob
        self.initializer_range = initializer_range
        self.layer_norm_eps = layer_norm_eps


class MobileNetV1OnnxConfig(OnnxConfig):
    torch_onnx_minimum_version = version.parse("1.11")

    @property
    def inputs(self) -> Mapping[str, Mapping[int, str]]:
        return OrderedDict([("pixel_values", {0: "batch"})])

    @property
    def outputs(self) -> Mapping[str, Mapping[int, str]]:
        if self.task == "image-classification":
            return OrderedDict([("logits", {0: "batch"})])
        else:
            return OrderedDict([("last_hidden_state", {0: "batch"}), ("pooler_output", {0: "batch"})])

    @property
    def atol_for_validation(self) -> float:
        return 1e-4