From 81594ed3911947e6c9f540f96da2eb62dba54122 Mon Sep 17 00:00:00 2001 From: Francois Chollet Date: Mon, 13 Apr 2020 12:06:13 -0700 Subject: [PATCH] Export EfficientNet models to the public API. PiperOrigin-RevId: 306281184 Change-Id: I37257d5afdc0ffec6eacd218e8f2e86ad118fb89 --- tensorflow/python/keras/api/BUILD | 1 + .../python/keras/applications/efficientnet.py | 78 ++++++++++++++++++- .../tools/api/generator/api_init_files.bzl | 1 + .../tools/api/generator/api_init_files_v1.bzl | 1 + ...flow.keras.applications.efficientnet.pbtxt | 43 ++++++++++ .../v1/tensorflow.keras.applications.pbtxt | 36 +++++++++ ...flow.keras.applications.efficientnet.pbtxt | 43 ++++++++++ .../v2/tensorflow.keras.applications.pbtxt | 36 +++++++++ 8 files changed, 237 insertions(+), 2 deletions(-) create mode 100644 tensorflow/tools/api/golden/v1/tensorflow.keras.applications.efficientnet.pbtxt create mode 100644 tensorflow/tools/api/golden/v2/tensorflow.keras.applications.efficientnet.pbtxt diff --git a/tensorflow/python/keras/api/BUILD b/tensorflow/python/keras/api/BUILD index 41a3f13e3eb..7dee9b1f638 100644 --- a/tensorflow/python/keras/api/BUILD +++ b/tensorflow/python/keras/api/BUILD @@ -17,6 +17,7 @@ keras_packages = [ "tensorflow.python.keras", "tensorflow.python.keras.activations", "tensorflow.python.keras.applications.densenet", + "tensorflow.python.keras.applications.efficientnet", "tensorflow.python.keras.applications.imagenet_utils", "tensorflow.python.keras.applications.inception_resnet_v2", "tensorflow.python.keras.applications.inception_v3", diff --git a/tensorflow/python/keras/applications/efficientnet.py b/tensorflow/python/keras/applications/efficientnet.py index 0487450f880..28426d4d42e 100644 --- a/tensorflow/python/keras/applications/efficientnet.py +++ b/tensorflow/python/keras/applications/efficientnet.py @@ -13,6 +13,7 @@ # limitations under the License. # ============================================================================== # pylint: disable=invalid-name +# pylint: disable=missing-docstring """EfficientNet models for Keras. Reference paper: @@ -142,6 +143,53 @@ DENSE_KERNEL_INITIALIZER = { layers = VersionAwareLayers() +BASE_DOCSTRING = """Instantiates the {name} architecture. + + Reference paper: + - [EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks]( + https://arxiv.org/abs/1905.11946) (ICML 2019) + + Optionally loads weights pre-trained on ImageNet. + Note that the data format convention used by the model is + the one specified in your Keras config at `~/.keras/keras.json`. + If you have never configured it, it defaults to `"channels_last"`. + + Arguments: + include_top: Whether to include the fully-connected + layer at the top of the network. Defaults to True. + weights: One of `None` (random initialization), + 'imagenet' (pre-training on ImageNet), + or the path to the weights file to be loaded. Defaults to 'imagenet'. + input_tensor: Optional Keras tensor + (i.e. output of `layers.Input()`) + to use as image input for the model. + input_shape: Optional shape tuple, only to be specified + if `include_top` is False. + It should have exactly 3 inputs channels. + pooling: Optional pooling mode for feature extraction + when `include_top` is `False`. Defaults to None. + - `None` means that the output of the model will be + the 4D tensor output of the + last convolutional layer. + - `avg` means that global average pooling + will be applied to the output of the + last convolutional layer, and thus + the output of the model will be a 2D tensor. + - `max` means that global max pooling will + be applied. + classes: Optional number of classes to classify images + into, only to be specified if `include_top` is True, and + if no `weights` argument is specified. Defaults to 1000 (number of + ImageNet classes). + classifier_activation: A `str` or callable. The activation function to use + on the "top" layer. Ignored unless `include_top=True`. Set + `classifier_activation=None` to return the logits of the "top" layer. + Defaults to 'softmax'. + + Returns: + A `keras.Model` instance. +""" + def EfficientNet( width_coefficient, @@ -163,8 +211,8 @@ def EfficientNet( """Instantiates the EfficientNet architecture using given scaling coefficients. Reference paper: - - [EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks] - (https://arxiv.org/abs/1905.11946) (ICML 2019) + - [EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks]( + https://arxiv.org/abs/1905.11946) (ICML 2019) Optionally loads weights pre-trained on ImageNet. Note that the data format convention used by the model is @@ -474,6 +522,7 @@ def EfficientNetB0(include_top=True, input_shape=None, pooling=None, classes=1000, + classifier_activation='softmax', **kwargs): return EfficientNet( 1.0, @@ -487,6 +536,7 @@ def EfficientNetB0(include_top=True, input_shape=input_shape, pooling=pooling, classes=classes, + classifier_activation=classifier_activation, **kwargs) @@ -498,6 +548,7 @@ def EfficientNetB1(include_top=True, input_shape=None, pooling=None, classes=1000, + classifier_activation='softmax', **kwargs): return EfficientNet( 1.0, @@ -511,6 +562,7 @@ def EfficientNetB1(include_top=True, input_shape=input_shape, pooling=pooling, classes=classes, + classifier_activation=classifier_activation, **kwargs) @@ -522,6 +574,7 @@ def EfficientNetB2(include_top=True, input_shape=None, pooling=None, classes=1000, + classifier_activation='softmax', **kwargs): return EfficientNet( 1.1, @@ -535,6 +588,7 @@ def EfficientNetB2(include_top=True, input_shape=input_shape, pooling=pooling, classes=classes, + classifier_activation=classifier_activation, **kwargs) @@ -546,6 +600,7 @@ def EfficientNetB3(include_top=True, input_shape=None, pooling=None, classes=1000, + classifier_activation='softmax', **kwargs): return EfficientNet( 1.2, @@ -559,6 +614,7 @@ def EfficientNetB3(include_top=True, input_shape=input_shape, pooling=pooling, classes=classes, + classifier_activation=classifier_activation, **kwargs) @@ -570,6 +626,7 @@ def EfficientNetB4(include_top=True, input_shape=None, pooling=None, classes=1000, + classifier_activation='softmax', **kwargs): return EfficientNet( 1.4, @@ -583,6 +640,7 @@ def EfficientNetB4(include_top=True, input_shape=input_shape, pooling=pooling, classes=classes, + classifier_activation=classifier_activation, **kwargs) @@ -594,6 +652,7 @@ def EfficientNetB5(include_top=True, input_shape=None, pooling=None, classes=1000, + classifier_activation='softmax', **kwargs): return EfficientNet( 1.6, @@ -607,6 +666,7 @@ def EfficientNetB5(include_top=True, input_shape=input_shape, pooling=pooling, classes=classes, + classifier_activation=classifier_activation, **kwargs) @@ -618,6 +678,7 @@ def EfficientNetB6(include_top=True, input_shape=None, pooling=None, classes=1000, + classifier_activation='softmax', **kwargs): return EfficientNet( 1.8, @@ -631,6 +692,7 @@ def EfficientNetB6(include_top=True, input_shape=input_shape, pooling=pooling, classes=classes, + classifier_activation=classifier_activation, **kwargs) @@ -642,6 +704,7 @@ def EfficientNetB7(include_top=True, input_shape=None, pooling=None, classes=1000, + classifier_activation='softmax', **kwargs): return EfficientNet( 2.0, @@ -655,9 +718,20 @@ def EfficientNetB7(include_top=True, input_shape=input_shape, pooling=pooling, classes=classes, + classifier_activation=classifier_activation, **kwargs) +EfficientNetB0.__doc__ = BASE_DOCSTRING.format(name='EfficientNetB0') +EfficientNetB1.__doc__ = BASE_DOCSTRING.format(name='EfficientNetB1') +EfficientNetB2.__doc__ = BASE_DOCSTRING.format(name='EfficientNetB2') +EfficientNetB3.__doc__ = BASE_DOCSTRING.format(name='EfficientNetB3') +EfficientNetB4.__doc__ = BASE_DOCSTRING.format(name='EfficientNetB4') +EfficientNetB5.__doc__ = BASE_DOCSTRING.format(name='EfficientNetB5') +EfficientNetB6.__doc__ = BASE_DOCSTRING.format(name='EfficientNetB6') +EfficientNetB7.__doc__ = BASE_DOCSTRING.format(name='EfficientNetB7') + + @keras_export('keras.applications.efficientnet.preprocess_input') def preprocess_input(x, data_format=None): # pylint: disable=unused-argument return x diff --git a/tensorflow/python/tools/api/generator/api_init_files.bzl b/tensorflow/python/tools/api/generator/api_init_files.bzl index 99981a5ce2e..13068a8090e 100644 --- a/tensorflow/python/tools/api/generator/api_init_files.bzl +++ b/tensorflow/python/tools/api/generator/api_init_files.bzl @@ -83,6 +83,7 @@ KERAS_API_INIT_FILES = [ "keras/activations/__init__.py", "keras/applications/__init__.py", "keras/applications/densenet/__init__.py", + "keras/applications/efficientnet/__init__.py", "keras/applications/imagenet_utils/__init__.py", "keras/applications/inception_resnet_v2/__init__.py", "keras/applications/inception_v3/__init__.py", diff --git a/tensorflow/python/tools/api/generator/api_init_files_v1.bzl b/tensorflow/python/tools/api/generator/api_init_files_v1.bzl index aa01dab3371..e5f0f46898f 100644 --- a/tensorflow/python/tools/api/generator/api_init_files_v1.bzl +++ b/tensorflow/python/tools/api/generator/api_init_files_v1.bzl @@ -103,6 +103,7 @@ KERAS_API_INIT_FILES_V1 = [ "keras/activations/__init__.py", "keras/applications/__init__.py", "keras/applications/densenet/__init__.py", + "keras/applications/efficientnet/__init__.py", "keras/applications/imagenet_utils/__init__.py", "keras/applications/inception_resnet_v2/__init__.py", "keras/applications/inception_v3/__init__.py", diff --git a/tensorflow/tools/api/golden/v1/tensorflow.keras.applications.efficientnet.pbtxt b/tensorflow/tools/api/golden/v1/tensorflow.keras.applications.efficientnet.pbtxt new file mode 100644 index 00000000000..f4103c50713 --- /dev/null +++ b/tensorflow/tools/api/golden/v1/tensorflow.keras.applications.efficientnet.pbtxt @@ -0,0 +1,43 @@ +path: "tensorflow.keras.applications.efficientnet" +tf_module { + member_method { + name: "EfficientNetB0" + argspec: "args=[\'include_top\', \'weights\', \'input_tensor\', \'input_shape\', \'pooling\', \'classes\', \'classifier_activation\'], varargs=None, keywords=kwargs, defaults=[\'True\', \'imagenet\', \'None\', \'None\', \'None\', \'1000\', \'softmax\'], " + } + member_method { + name: "EfficientNetB1" + argspec: "args=[\'include_top\', \'weights\', \'input_tensor\', \'input_shape\', \'pooling\', \'classes\', \'classifier_activation\'], varargs=None, keywords=kwargs, defaults=[\'True\', \'imagenet\', \'None\', \'None\', \'None\', \'1000\', \'softmax\'], " + } + member_method { + name: "EfficientNetB2" + argspec: "args=[\'include_top\', \'weights\', \'input_tensor\', \'input_shape\', \'pooling\', \'classes\', \'classifier_activation\'], varargs=None, keywords=kwargs, defaults=[\'True\', \'imagenet\', \'None\', \'None\', \'None\', \'1000\', \'softmax\'], " + } + member_method { + name: "EfficientNetB3" + argspec: "args=[\'include_top\', \'weights\', \'input_tensor\', \'input_shape\', \'pooling\', \'classes\', \'classifier_activation\'], varargs=None, keywords=kwargs, defaults=[\'True\', \'imagenet\', \'None\', \'None\', \'None\', \'1000\', \'softmax\'], " + } + member_method { + name: "EfficientNetB4" + argspec: "args=[\'include_top\', \'weights\', \'input_tensor\', \'input_shape\', \'pooling\', \'classes\', \'classifier_activation\'], varargs=None, keywords=kwargs, defaults=[\'True\', \'imagenet\', \'None\', \'None\', \'None\', \'1000\', \'softmax\'], " + } + member_method { + name: "EfficientNetB5" + argspec: "args=[\'include_top\', \'weights\', \'input_tensor\', \'input_shape\', \'pooling\', \'classes\', \'classifier_activation\'], varargs=None, keywords=kwargs, defaults=[\'True\', \'imagenet\', \'None\', \'None\', \'None\', \'1000\', \'softmax\'], " + } + member_method { + name: "EfficientNetB6" + argspec: "args=[\'include_top\', \'weights\', \'input_tensor\', \'input_shape\', \'pooling\', \'classes\', \'classifier_activation\'], varargs=None, keywords=kwargs, defaults=[\'True\', \'imagenet\', \'None\', \'None\', \'None\', \'1000\', \'softmax\'], " + } + member_method { + name: "EfficientNetB7" + argspec: "args=[\'include_top\', \'weights\', \'input_tensor\', \'input_shape\', \'pooling\', \'classes\', \'classifier_activation\'], varargs=None, keywords=kwargs, defaults=[\'True\', \'imagenet\', \'None\', \'None\', \'None\', \'1000\', \'softmax\'], " + } + member_method { + name: "decode_predictions" + argspec: "args=[\'preds\', \'top\'], varargs=None, keywords=None, defaults=[\'5\'], " + } + member_method { + name: "preprocess_input" + argspec: "args=[\'x\', \'data_format\'], varargs=None, keywords=None, defaults=[\'None\'], " + } +} diff --git a/tensorflow/tools/api/golden/v1/tensorflow.keras.applications.pbtxt b/tensorflow/tools/api/golden/v1/tensorflow.keras.applications.pbtxt index 0728c80fb5f..900df849f45 100644 --- a/tensorflow/tools/api/golden/v1/tensorflow.keras.applications.pbtxt +++ b/tensorflow/tools/api/golden/v1/tensorflow.keras.applications.pbtxt @@ -4,6 +4,10 @@ tf_module { name: "densenet" mtype: "" } + member { + name: "efficientnet" + mtype: "" + } member { name: "imagenet_utils" mtype: "" @@ -64,6 +68,38 @@ tf_module { name: "DenseNet201" argspec: "args=[\'include_top\', \'weights\', \'input_tensor\', \'input_shape\', \'pooling\', \'classes\'], varargs=None, keywords=None, defaults=[\'True\', \'imagenet\', \'None\', \'None\', \'None\', \'1000\'], " } + member_method { + name: "EfficientNetB0" + argspec: "args=[\'include_top\', \'weights\', \'input_tensor\', \'input_shape\', \'pooling\', \'classes\', \'classifier_activation\'], varargs=None, keywords=kwargs, defaults=[\'True\', \'imagenet\', \'None\', \'None\', \'None\', \'1000\', \'softmax\'], " + } + member_method { + name: "EfficientNetB1" + argspec: "args=[\'include_top\', \'weights\', \'input_tensor\', \'input_shape\', \'pooling\', \'classes\', \'classifier_activation\'], varargs=None, keywords=kwargs, defaults=[\'True\', \'imagenet\', \'None\', \'None\', \'None\', \'1000\', \'softmax\'], " + } + member_method { + name: "EfficientNetB2" + argspec: "args=[\'include_top\', \'weights\', \'input_tensor\', \'input_shape\', \'pooling\', \'classes\', \'classifier_activation\'], varargs=None, keywords=kwargs, defaults=[\'True\', \'imagenet\', \'None\', \'None\', \'None\', \'1000\', \'softmax\'], " + } + member_method { + name: "EfficientNetB3" + argspec: "args=[\'include_top\', \'weights\', \'input_tensor\', \'input_shape\', \'pooling\', \'classes\', \'classifier_activation\'], varargs=None, keywords=kwargs, defaults=[\'True\', \'imagenet\', \'None\', \'None\', \'None\', \'1000\', \'softmax\'], " + } + member_method { + name: "EfficientNetB4" + argspec: "args=[\'include_top\', \'weights\', \'input_tensor\', \'input_shape\', \'pooling\', \'classes\', \'classifier_activation\'], varargs=None, keywords=kwargs, defaults=[\'True\', \'imagenet\', \'None\', \'None\', \'None\', \'1000\', \'softmax\'], " + } + member_method { + name: "EfficientNetB5" + argspec: "args=[\'include_top\', \'weights\', \'input_tensor\', \'input_shape\', \'pooling\', \'classes\', \'classifier_activation\'], varargs=None, keywords=kwargs, defaults=[\'True\', \'imagenet\', \'None\', \'None\', \'None\', \'1000\', \'softmax\'], " + } + member_method { + name: "EfficientNetB6" + argspec: "args=[\'include_top\', \'weights\', \'input_tensor\', \'input_shape\', \'pooling\', \'classes\', \'classifier_activation\'], varargs=None, keywords=kwargs, defaults=[\'True\', \'imagenet\', \'None\', \'None\', \'None\', \'1000\', \'softmax\'], " + } + member_method { + name: "EfficientNetB7" + argspec: "args=[\'include_top\', \'weights\', \'input_tensor\', \'input_shape\', \'pooling\', \'classes\', \'classifier_activation\'], varargs=None, keywords=kwargs, defaults=[\'True\', \'imagenet\', \'None\', \'None\', \'None\', \'1000\', \'softmax\'], " + } member_method { name: "InceptionResNetV2" argspec: "args=[\'include_top\', \'weights\', \'input_tensor\', \'input_shape\', \'pooling\', \'classes\', \'classifier_activation\'], varargs=None, keywords=kwargs, defaults=[\'True\', \'imagenet\', \'None\', \'None\', \'None\', \'1000\', \'softmax\'], " diff --git a/tensorflow/tools/api/golden/v2/tensorflow.keras.applications.efficientnet.pbtxt b/tensorflow/tools/api/golden/v2/tensorflow.keras.applications.efficientnet.pbtxt new file mode 100644 index 00000000000..f4103c50713 --- /dev/null +++ b/tensorflow/tools/api/golden/v2/tensorflow.keras.applications.efficientnet.pbtxt @@ -0,0 +1,43 @@ +path: "tensorflow.keras.applications.efficientnet" +tf_module { + member_method { + name: "EfficientNetB0" + argspec: "args=[\'include_top\', \'weights\', \'input_tensor\', \'input_shape\', \'pooling\', \'classes\', \'classifier_activation\'], varargs=None, keywords=kwargs, defaults=[\'True\', \'imagenet\', \'None\', \'None\', \'None\', \'1000\', \'softmax\'], " + } + member_method { + name: "EfficientNetB1" + argspec: "args=[\'include_top\', \'weights\', \'input_tensor\', \'input_shape\', \'pooling\', \'classes\', \'classifier_activation\'], varargs=None, keywords=kwargs, defaults=[\'True\', \'imagenet\', \'None\', \'None\', \'None\', \'1000\', \'softmax\'], " + } + member_method { + name: "EfficientNetB2" + argspec: "args=[\'include_top\', \'weights\', \'input_tensor\', \'input_shape\', \'pooling\', \'classes\', \'classifier_activation\'], varargs=None, keywords=kwargs, defaults=[\'True\', \'imagenet\', \'None\', \'None\', \'None\', \'1000\', \'softmax\'], " + } + member_method { + name: "EfficientNetB3" + argspec: "args=[\'include_top\', \'weights\', \'input_tensor\', \'input_shape\', \'pooling\', \'classes\', \'classifier_activation\'], varargs=None, keywords=kwargs, defaults=[\'True\', \'imagenet\', \'None\', \'None\', \'None\', \'1000\', \'softmax\'], " + } + member_method { + name: "EfficientNetB4" + argspec: "args=[\'include_top\', \'weights\', \'input_tensor\', \'input_shape\', \'pooling\', \'classes\', \'classifier_activation\'], varargs=None, keywords=kwargs, defaults=[\'True\', \'imagenet\', \'None\', \'None\', \'None\', \'1000\', \'softmax\'], " + } + member_method { + name: "EfficientNetB5" + argspec: "args=[\'include_top\', \'weights\', \'input_tensor\', \'input_shape\', \'pooling\', \'classes\', \'classifier_activation\'], varargs=None, keywords=kwargs, defaults=[\'True\', \'imagenet\', \'None\', \'None\', \'None\', \'1000\', \'softmax\'], " + } + member_method { + name: "EfficientNetB6" + argspec: "args=[\'include_top\', \'weights\', \'input_tensor\', \'input_shape\', \'pooling\', \'classes\', \'classifier_activation\'], varargs=None, keywords=kwargs, defaults=[\'True\', \'imagenet\', \'None\', \'None\', \'None\', \'1000\', \'softmax\'], " + } + member_method { + name: "EfficientNetB7" + argspec: "args=[\'include_top\', \'weights\', \'input_tensor\', \'input_shape\', \'pooling\', \'classes\', \'classifier_activation\'], varargs=None, keywords=kwargs, defaults=[\'True\', \'imagenet\', \'None\', \'None\', \'None\', \'1000\', \'softmax\'], " + } + member_method { + name: "decode_predictions" + argspec: "args=[\'preds\', \'top\'], varargs=None, keywords=None, defaults=[\'5\'], " + } + member_method { + name: "preprocess_input" + argspec: "args=[\'x\', \'data_format\'], varargs=None, keywords=None, defaults=[\'None\'], " + } +} diff --git a/tensorflow/tools/api/golden/v2/tensorflow.keras.applications.pbtxt b/tensorflow/tools/api/golden/v2/tensorflow.keras.applications.pbtxt index 0728c80fb5f..900df849f45 100644 --- a/tensorflow/tools/api/golden/v2/tensorflow.keras.applications.pbtxt +++ b/tensorflow/tools/api/golden/v2/tensorflow.keras.applications.pbtxt @@ -4,6 +4,10 @@ tf_module { name: "densenet" mtype: "" } + member { + name: "efficientnet" + mtype: "" + } member { name: "imagenet_utils" mtype: "" @@ -64,6 +68,38 @@ tf_module { name: "DenseNet201" argspec: "args=[\'include_top\', \'weights\', \'input_tensor\', \'input_shape\', \'pooling\', \'classes\'], varargs=None, keywords=None, defaults=[\'True\', \'imagenet\', \'None\', \'None\', \'None\', \'1000\'], " } + member_method { + name: "EfficientNetB0" + argspec: "args=[\'include_top\', \'weights\', \'input_tensor\', \'input_shape\', \'pooling\', \'classes\', \'classifier_activation\'], varargs=None, keywords=kwargs, defaults=[\'True\', \'imagenet\', \'None\', \'None\', \'None\', \'1000\', \'softmax\'], " + } + member_method { + name: "EfficientNetB1" + argspec: "args=[\'include_top\', \'weights\', \'input_tensor\', \'input_shape\', \'pooling\', \'classes\', \'classifier_activation\'], varargs=None, keywords=kwargs, defaults=[\'True\', \'imagenet\', \'None\', \'None\', \'None\', \'1000\', \'softmax\'], " + } + member_method { + name: "EfficientNetB2" + argspec: "args=[\'include_top\', \'weights\', \'input_tensor\', \'input_shape\', \'pooling\', \'classes\', \'classifier_activation\'], varargs=None, keywords=kwargs, defaults=[\'True\', \'imagenet\', \'None\', \'None\', \'None\', \'1000\', \'softmax\'], " + } + member_method { + name: "EfficientNetB3" + argspec: "args=[\'include_top\', \'weights\', \'input_tensor\', \'input_shape\', \'pooling\', \'classes\', \'classifier_activation\'], varargs=None, keywords=kwargs, defaults=[\'True\', \'imagenet\', \'None\', \'None\', \'None\', \'1000\', \'softmax\'], " + } + member_method { + name: "EfficientNetB4" + argspec: "args=[\'include_top\', \'weights\', \'input_tensor\', \'input_shape\', \'pooling\', \'classes\', \'classifier_activation\'], varargs=None, keywords=kwargs, defaults=[\'True\', \'imagenet\', \'None\', \'None\', \'None\', \'1000\', \'softmax\'], " + } + member_method { + name: "EfficientNetB5" + argspec: "args=[\'include_top\', \'weights\', \'input_tensor\', \'input_shape\', \'pooling\', \'classes\', \'classifier_activation\'], varargs=None, keywords=kwargs, defaults=[\'True\', \'imagenet\', \'None\', \'None\', \'None\', \'1000\', \'softmax\'], " + } + member_method { + name: "EfficientNetB6" + argspec: "args=[\'include_top\', \'weights\', \'input_tensor\', \'input_shape\', \'pooling\', \'classes\', \'classifier_activation\'], varargs=None, keywords=kwargs, defaults=[\'True\', \'imagenet\', \'None\', \'None\', \'None\', \'1000\', \'softmax\'], " + } + member_method { + name: "EfficientNetB7" + argspec: "args=[\'include_top\', \'weights\', \'input_tensor\', \'input_shape\', \'pooling\', \'classes\', \'classifier_activation\'], varargs=None, keywords=kwargs, defaults=[\'True\', \'imagenet\', \'None\', \'None\', \'None\', \'1000\', \'softmax\'], " + } member_method { name: "InceptionResNetV2" argspec: "args=[\'include_top\', \'weights\', \'input_tensor\', \'input_shape\', \'pooling\', \'classes\', \'classifier_activation\'], varargs=None, keywords=kwargs, defaults=[\'True\', \'imagenet\', \'None\', \'None\', \'None\', \'1000\', \'softmax\'], "