2d separable convolution layer this layer performs a depthwise convolution that acts separately on channels followed by a pointwise convolution that mixes channels if usebias is true and a bias initializer is provided it adds a bias vector to the output it then optionally applies an activation function to produce the final output args filters int the dimensionality of the output space i e the number of filters in the pointwise convolution kernelsize int or tuplelist of 2 integers specifying the size of the depthwise convolution window strides int or tuplelist of 2 integers specifying the stride length of the depthwise convolution if only one int is specified the same stride size will be used for all dimensions strides 1 is incompatible with dilationrate 1 padding string either valid or same caseinsensitive valid means no padding same results in padding evenly to the leftright or updown of the input when paddingsame and strides1 the output has the same size as the input dataformat string either channelslast or channelsfirst the ordering of the dimensions in the inputs channelslast corresponds to inputs with shape batch steps features while channelsfirst corresponds to inputs with shape batch features steps it defaults to the imagedataformat value found in your keras config file at keraskeras json if you never set it then it will be channelslast dilationrate int or tuplelist of 2 integers specifying the dilation rate to use for dilated convolution if only one int is specified the same dilation rate will be used for all dimensions depthmultiplier the number of depthwise convolution output channels for each input channel the total number of depthwise convolution output channels will be equal to inputchannel depthmultiplier activation activation function if none no activation is applied usebias bool if true bias will be added to the output depthwiseinitializer an initializer for the depthwise convolution kernel if none then the default initializer glorotuniform will be used pointwiseinitializer an initializer for the pointwise convolution kernel if none then the default initializer glorotuniform will be used biasinitializer an initializer for the bias vector if none the default initializer zeros will be used depthwiseregularizer optional regularizer for the depthwise convolution kernel pointwiseregularizer optional regularizer for the pointwise convolution kernel biasregularizer optional regularizer for the bias vector activityregularizer optional regularizer function for the output depthwiseconstraint optional projection function to be applied to the depthwise kernel after being updated by an optimizer e g used for norm constraints or value constraints for layer weights the function must take as input the unprojected variable and must return the projected variable which must have the same shape pointwiseconstraint optional projection function to be applied to the pointwise kernel after being updated by an optimizer biasconstraint optional projection function to be applied to the bias after being updated by an optimizer input shape if dataformatchannelslast a 4d tensor with shape batchsize height width channels if dataformatchannelsfirst a 4d tensor with shape batchsize channels height width output shape if dataformatchannelslast a 4d tensor with shape batchsize newheight newwidth filters if dataformatchannelsfirst a 4d tensor with shape batchsize filters newheight newwidth returns a 4d tensor representing activationseparableconv2dinputs kernel bias examples x np random rand4 10 10 12 y keras layers separableconv2d3 4 3 2 activation relu x printy shape 4 4 4 4 2d separable convolution layer this layer performs a depthwise convolution that acts separately on channels followed by a pointwise convolution that mixes channels if use_bias is true and a bias initializer is provided it adds a bias vector to the output it then optionally applies an activation function to produce the final output args filters int the dimensionality of the output space i e the number of filters in the pointwise convolution kernel_size int or tuple list of 2 integers specifying the size of the depthwise convolution window strides int or tuple list of 2 integers specifying the stride length of the depthwise convolution if only one int is specified the same stride size will be used for all dimensions strides 1 is incompatible with dilation_rate 1 padding string either valid or same case insensitive valid means no padding same results in padding evenly to the left right or up down of the input when padding same and strides 1 the output has the same size as the input data_format string either channels_last or channels_first the ordering of the dimensions in the inputs channels_last corresponds to inputs with shape batch steps features while channels_first corresponds to inputs with shape batch features steps it defaults to the image_data_format value found in your keras config file at keras keras json if you never set it then it will be channels_last dilation_rate int or tuple list of 2 integers specifying the dilation rate to use for dilated convolution if only one int is specified the same dilation rate will be used for all dimensions depth_multiplier the number of depthwise convolution output channels for each input channel the total number of depthwise convolution output channels will be equal to input_channel depth_multiplier activation activation function if none no activation is applied use_bias bool if true bias will be added to the output depthwise_initializer an initializer for the depthwise convolution kernel if none then the default initializer glorot_uniform will be used pointwise_initializer an initializer for the pointwise convolution kernel if none then the default initializer glorot_uniform will be used bias_initializer an initializer for the bias vector if none the default initializer zeros will be used depthwise_regularizer optional regularizer for the depthwise convolution kernel pointwise_regularizer optional regularizer for the pointwise convolution kernel bias_regularizer optional regularizer for the bias vector activity_regularizer optional regularizer function for the output depthwise_constraint optional projection function to be applied to the depthwise kernel after being updated by an optimizer e g used for norm constraints or value constraints for layer weights the function must take as input the unprojected variable and must return the projected variable which must have the same shape pointwise_constraint optional projection function to be applied to the pointwise kernel after being updated by an optimizer bias_constraint optional projection function to be applied to the bias after being updated by an optimizer input shape if data_format channels_last a 4d tensor with shape batch_size height width channels if data_format channels_first a 4d tensor with shape batch_size channels height width output shape if data_format channels_last a 4d tensor with shape batch_size new_height new_width filters if data_format channels_first a 4d tensor with shape batch_size filters new_height new_width returns a 4d tensor representing activation separable_conv2d inputs kernel bias examples x np random rand 4 10 10 12 y keras layers separableconv2d 3 4 3 2 activation relu x print y shape 4 4 4 4
from keras.api_export import keras_export
from keras.layers.convolutional.base_separable_conv import BaseSeparableConv


@keras_export(
    [
        "keras.layers.SeparableConv2D",
        "keras.layers.SeparableConvolution2D",
    ]
)
class SeparableConv2D(BaseSeparableConv):
    

    def __init__(
        self,
        filters,
        kernel_size,
        strides=(1, 1),
        padding="valid",
        data_format=None,
        dilation_rate=(1, 1),
        depth_multiplier=1,
        activation=None,
        use_bias=True,
        depthwise_initializer="glorot_uniform",
        pointwise_initializer="glorot_uniform",
        bias_initializer="zeros",
        depthwise_regularizer=None,
        pointwise_regularizer=None,
        bias_regularizer=None,
        activity_regularizer=None,
        depthwise_constraint=None,
        pointwise_constraint=None,
        bias_constraint=None,
        **kwargs,
    ):
        super().__init__(
            rank=2,
            depth_multiplier=depth_multiplier,
            filters=filters,
            kernel_size=kernel_size,
            strides=strides,
            padding=padding,
            data_format=data_format,
            dilation_rate=dilation_rate,
            activation=activation,
            use_bias=use_bias,
            depthwise_initializer=depthwise_initializer,
            pointwise_initializer=pointwise_initializer,
            bias_initializer=bias_initializer,
            depthwise_regularizer=depthwise_regularizer,
            pointwise_regularizer=pointwise_regularizer,
            bias_regularizer=bias_regularizer,
            activity_regularizer=activity_regularizer,
            depthwise_constraint=depthwise_constraint,
            pointwise_constraint=pointwise_constraint,
            bias_constraint=bias_constraint,
            **kwargs,
        )