Source code for teras._src.layers.ctgan.discriminator_layer

import keras
from teras._src.api_export import teras_export


[docs] @teras_export("teras.layers.CTGANDiscriminatorLayer") class CTGANDiscriminatorLayer(keras.layers.Layer): """ Discriminator Layer based on the architecture proposed by Lei Xu et al. in the paper, "Modeling Tabular data using Conditional GAN". outputs = Dropout(LeakyReLU(Dense(inputs))) Reference(s): https://arxiv.org/abs/1907.00503 Args: dim: int, Dimensionality of the hidden layer. Default to 256. leaky_relu_alpha: float, Alpha value to use for leaky relu activation. Defaults to 0.2 dropout_rate: float, Dropout rate to use in the `Dropout` layer, which is applied after hidden layer. Defaults to 0. """
[docs] def __init__(self, dim: int = 256, leaky_relu_alpha: float = 0.2, dropout_rate: float = 0., **kwargs): super().__init__(**kwargs) self.dim = dim self.leaky_relu_alpha = leaky_relu_alpha self.dropout_rate = dropout_rate self.dense = keras.layers.Dense(dim) self.leaky_relu = keras.layers.LeakyReLU( negative_slope=self.leaky_relu_alpha) self.dropout = keras.layers.Dropout(rate=self.dropout_rate)
def build(self, input_shape): self.dense.build(input_shape) input_shape = self.dense.compute_output_shape(input_shape) self.leaky_relu.build(input_shape) self.dropout.build(input_shape) def call(self, inputs): out = self.dense(inputs) out = self.leaky_relu(out) out = self.dropout(out) return out def compute_output_shape(self, input_shape): return input_shape[:-1] + (self.dim,) def get_config(self): config = super().get_config() config.update({ 'dim': self.dim, 'leaky_relu_alpha': self.leaky_relu_alpha, 'dropout_rate': self.dropout_rate} ) return config