3d transposed convolution layer the need for transposed convolutions generally arise from the desire to use a transformation going in the opposite direction of a normal convolution i e from something that has the shape of the output of some convolution to something that has the shape of its input while maintaining a connectivity pattern that is compatible with said convolution args filters int the dimension of the output space the number of filters in the transposed convolution kernelsize int or tuplelist of 1 integer specifying the size of the transposed convolution window strides int or tuplelist of 1 integer specifying the stride length of the transposed convolution 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 batchsize spatialdim1 spatialdim2 spatialdim3 channels while channelsfirst corresponds to inputs with shape batchsize spatialdim1 spatialdim2 spatialdim3 channels 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 1 integers specifying the dilation rate to use for dilated transposed convolution activation activation function if none no activation is applied usebias bool if true bias will be added to the output kernelinitializer initializer for the convolution kernel if none the default initializer glorotuniform will be used biasinitializer initializer for the bias vector if none the default initializer zeros will be used kernelregularizer optional regularizer for the convolution kernel biasregularizer optional regularizer for the bias vector activityregularizer optional regularizer function for the output kernelconstraint optional projection function to be applied to the kernel after being updated by an optimizer e g used to implement 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 constraints are not safe to use when doing asynchronous distributed training biasconstraint optional projection function to be applied to the bias after being updated by an optimizer input shape if dataformatchannelslast 5d tensor with shape batchsize spatialdim1 spatialdim2 spatialdim3 channels if dataformatchannelsfirst 5d tensor with shape batchsize channels spatialdim1 spatialdim2 spatialdim3 output shape if dataformatchannelslast 5d tensor with shape batchsize newspatialdim1 newspatialdim2 newspatialdim3 filters if dataformatchannelsfirst 5d tensor with shape batchsize filters newspatialdim1 newspatialdim2 newspatialdim3 returns a 5d tensor representing activationconv3dinputs kernel bias raises valueerror when both strides 1 and dilationrate 1 references a guide to convolution arithmetic for deep learning https arxiv orgabs1603 07285v1 deconvolutional networks https www matthewzeiler commattzeilerdeconvolutionalnetworks pdf examples x np random rand4 10 8 12 128 y keras layers conv3dtranspose32 2 2 activation relu x printy shape 4 20 16 24 32 3d transposed convolution layer the need for transposed convolutions generally arise from the desire to use a transformation going in the opposite direction of a normal convolution i e from something that has the shape of the output of some convolution to something that has the shape of its input while maintaining a connectivity pattern that is compatible with said convolution args filters int the dimension of the output space the number of filters in the transposed convolution kernel_size int or tuple list of 1 integer specifying the size of the transposed convolution window strides int or tuple list of 1 integer specifying the stride length of the transposed convolution 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_size spatial_dim1 spatial_dim2 spatial_dim3 channels while channels_first corresponds to inputs with shape batch_size spatial_dim1 spatial_dim2 spatial_dim3 channels 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 1 integers specifying the dilation rate to use for dilated transposed convolution activation activation function if none no activation is applied use_bias bool if true bias will be added to the output kernel_initializer initializer for the convolution kernel if none the default initializer glorot_uniform will be used bias_initializer initializer for the bias vector if none the default initializer zeros will be used kernel_regularizer optional regularizer for the convolution kernel bias_regularizer optional regularizer for the bias vector activity_regularizer optional regularizer function for the output kernel_constraint optional projection function to be applied to the kernel after being updated by an optimizer e g used to implement 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 constraints are not safe to use when doing asynchronous distributed training bias_constraint optional projection function to be applied to the bias after being updated by an optimizer input shape if data_format channels_last 5d tensor with shape batch_size spatial_dim1 spatial_dim2 spatial_dim3 channels if data_format channels_first 5d tensor with shape batch_size channels spatial_dim1 spatial_dim2 spatial_dim3 output shape if data_format channels_last 5d tensor with shape batch_size new_spatial_dim1 new_spatial_dim2 new_spatial_dim3 filters if data_format channels_first 5d tensor with shape batch_size filters new_spatial_dim1 new_spatial_dim2 new_spatial_dim3 returns a 5d tensor representing activation conv3d inputs kernel bias raises valueerror when both strides 1 and dilation_rate 1 references a guide to convolution arithmetic for deep learning https arxiv org abs 1603 07285v1 deconvolutional networks https www matthewzeiler com mattzeiler deconvolutionalnetworks pdf examples x np random rand 4 10 8 12 128 y keras layers conv3dtranspose 32 2 2 activation relu x print y shape 4 20 16 24 32
from keras.api_export import keras_export
from keras.layers.convolutional.base_conv_transpose import BaseConvTranspose


@keras_export(
    [
        "keras.layers.Conv3DTranspose",
        "keras.layers.Convolution3DTranspose",
    ]
)
class Conv3DTranspose(BaseConvTranspose):
    

    def __init__(
        self,
        filters,
        kernel_size,
        strides=(1, 1, 1),
        padding="valid",
        data_format=None,
        dilation_rate=(1, 1, 1),
        activation=None,
        use_bias=True,
        kernel_initializer="glorot_uniform",
        bias_initializer="zeros",
        kernel_regularizer=None,
        bias_regularizer=None,
        activity_regularizer=None,
        kernel_constraint=None,
        bias_constraint=None,
        **kwargs
    ):
        super().__init__(
            rank=3,
            filters=filters,
            kernel_size=kernel_size,
            strides=strides,
            padding=padding,
            data_format=data_format,
            dilation_rate=dilation_rate,
            activation=activation,
            use_bias=use_bias,
            kernel_initializer=kernel_initializer,
            bias_initializer=bias_initializer,
            kernel_regularizer=kernel_regularizer,
            bias_regularizer=bias_regularizer,
            activity_regularizer=activity_regularizer,
            kernel_constraint=kernel_constraint,
            bias_constraint=bias_constraint,
            **kwargs
        )