Module delta.extensions.layers.efficientnet

An implementation of EfficientNet. This is taken from tensorflow but modified to remove initial layers.

Functions

def DeltaEfficientNet(input_shape, width_coefficient=1.1, depth_coefficient=1.2, name=None)
def EfficientNet(width_coefficient, depth_coefficient, drop_connect_rate=0.2, depth_divisor=8, activation_fn=<function swish>, blocks_args=[{'kernel_size': 3, 'repeats': 1, 'filters_in': 32, 'filters_out': 16, 'expand_ratio': 1, 'id_skip': True, 'strides': 1, 'se_ratio': 0.25}, {'kernel_size': 3, 'repeats': 2, 'filters_in': 16, 'filters_out': 24, 'expand_ratio': 6, 'id_skip': True, 'strides': 2, 'se_ratio': 0.25}, {'kernel_size': 5, 'repeats': 2, 'filters_in': 24, 'filters_out': 40, 'expand_ratio': 6, 'id_skip': True, 'strides': 2, 'se_ratio': 0.25}, {'kernel_size': 3, 'repeats': 3, 'filters_in': 40, 'filters_out': 80, 'expand_ratio': 6, 'id_skip': True, 'strides': 2, 'se_ratio': 0.25}, {'kernel_size': 5, 'repeats': 3, 'filters_in': 80, 'filters_out': 112, 'expand_ratio': 6, 'id_skip': True, 'strides': 1, 'se_ratio': 0.25}, {'kernel_size': 5, 'repeats': 4, 'filters_in': 112, 'filters_out': 192, 'expand_ratio': 6, 'id_skip': True, 'strides': 2, 'se_ratio': 0.25}, {'kernel_size': 3, 'repeats': 1, 'filters_in': 192, 'filters_out': 320, 'expand_ratio': 6, 'id_skip': True, 'strides': 1, 'se_ratio': 0.25}], model_name='efficientnet', weights='imagenet', input_tensor=None, input_shape=None, name=None)
def block(inputs, activation_fn=<function swish>, drop_rate=0.0, name='', filters_in=32, filters_out=16, kernel_size=3, strides=1, expand_ratio=1, se_ratio=0.0, id_skip=True)

A mobile inverted residual block.

Arguments

inputs: input tensor.
activation_fn: activation function.
drop_rate: float between 0 and 1, fraction of the input units to drop.
name: string, block label.
filters_in: integer, the number of input filters.
filters_out: integer, the number of output filters.
kernel_size: integer, the dimension of the convolution window.
strides: integer, the stride of the convolution.
expand_ratio: integer, scaling coefficient for the input filters.
se_ratio: float between 0 and 1, fraction to squeeze the input filters.
id_skip: boolean.

Returns

output tensor for the block.
def correct_pad(inputs, kernel_size)

Returns a tuple for zero-padding for 2D convolution with downsampling.

Arguments

input_size: An integer or tuple/list of 2 integers.
kernel_size: An integer or tuple/list of 2 integers.

Returns

A tuple.
def swish(x)

Swish activation function.

Arguments

x: Input tensor.

Returns

The Swish activation: `x * sigmoid(x)`.

References

[Searching for Activation Functions](https://arxiv.org/abs/1710.05941)