Jump to content

Connect Leeroopedia MCP: Equip your AI agents to search best practices, build plans, verify code, diagnose failures, and look up hyperparameter defaults.

Implementation:Gretelai Gretel synthetics DGAN Build

From Leeroopedia
Knowledge Sources
Domains Synthetic_Data, Time_Series, GAN
Last Updated 2026-02-14 19:00 GMT

Overview

Concrete tool for constructing the DoppelGANger Generator and Discriminator neural networks provided by the gretel-synthetics library.

Description

The DGAN._build() method constructs all neural network components of the model. It creates: (1) additional attribute Output metadata for per-example midpoint/half-range via create_additional_attribute_outputs(), (2) a Generator containing attribute MLP, additional attribute MLP, and feature LSTM sub-networks, (3) a Discriminator for features with 5 layers of 200 units, (4) an optional Discriminator for attributes with the same architecture, (5) noise sampling lambda functions for both attribute and feature noise, and (6) optional LSTM forget gate bias initialization when forget_bias=True.

The Generator class (in torch_modules.py) uses _make_attribute_generator() to build MLP sub-networks with configurable layers of Linear + ReLU + BatchNorm1d + OutputDecoder. The feature generator is an LSTM followed by a SelectLastCell layer and a Merger of sample_len OutputDecoders. The Discriminator class is a straightforward MLP of Linear + ReLU layers ending in a single linear output.

Usage

_build() is called internally either during DGAN.__init__() (when both output params are provided), during the first train_numpy() call (after Output metadata is created from data), or during DGAN.load(). It should not be called directly by users.

Code Reference

Source Location

  • Repository: gretel-synthetics
  • File: src/gretel_synthetics/timeseries_dgan/dgan.py
  • Lines: 665-777 (_build)
  • File: src/gretel_synthetics/timeseries_dgan/torch_modules.py
  • Lines: 166-372 (Generator), 378-408 (Discriminator)

Signature

def _build(
    self,
    attribute_outputs: Optional[List[Output]],
    feature_outputs: List[Output],
):
class Generator(torch.nn.Module):
    def __init__(
        self,
        attribute_outputs: Optional[List[Output]],
        additional_attribute_outputs: Optional[List[Output]],
        feature_outputs: List[Output],
        max_sequence_len: int,
        sample_len: int,
        attribute_noise_dim: Optional[int],
        feature_noise_dim: int,
        attribute_num_units: Optional[int],
        attribute_num_layers: Optional[int],
        feature_num_units: int,
        feature_num_layers: int,
    ):
class Discriminator(torch.nn.Module):
    def __init__(self, input_dim: int, num_layers: int = 5, num_units: int = 200):

Import

from gretel_synthetics.timeseries_dgan.dgan import DGAN
from gretel_synthetics.timeseries_dgan.torch_modules import Generator, Discriminator

I/O Contract

Inputs (_build)

Name Type Required Description
attribute_outputs Optional[List[Output]] Yes Output metadata for attribute variables; None if no attributes
feature_outputs List[Output] Yes Output metadata for feature (time series) variables

Inputs (Generator constructor)

Name Type Required Description
attribute_outputs Optional[List[Output]] Yes Metadata for attribute variables to generate
additional_attribute_outputs Optional[List[Output]] Yes Metadata for additional attribute variables (midpoint/half-range)
feature_outputs List[Output] Yes Metadata for feature variables to generate
max_sequence_len int Yes Length of time series sequences
sample_len int Yes Time steps generated per LSTM cell
attribute_noise_dim Optional[int] Yes Size of attribute noise vector
feature_noise_dim int Yes Size of feature noise vector
attribute_num_units Optional[int] Yes Units per layer in attribute MLP
attribute_num_layers Optional[int] Yes Number of layers in attribute MLP
feature_num_units int Yes Units per LSTM layer
feature_num_layers int Yes Number of LSTM layers

Inputs (Discriminator constructor)

Name Type Required Description
input_dim int Yes Size of input vector (sum of all attribute dims + flattened features)
num_layers int No (default 5) Number of MLP layers
num_units int No (default 200) Units per MLP layer

Outputs

Name Type Description
(side effects) None _build sets self.generator, self.feature_discriminator, self.attribute_discriminator, self.attribute_noise_func, self.feature_noise_func, and self.is_built=True on the DGAN instance

Usage Examples

Basic Example

import numpy as np
from gretel_synthetics.timeseries_dgan.dgan import DGAN
from gretel_synthetics.timeseries_dgan.config import DGANConfig

# Model is built automatically during first train call
config = DGANConfig(max_sequence_len=20, sample_len=5, epochs=10)
model = DGAN(config)

features = np.random.rand(1000, 20, 2)
model.train_numpy(features=features)
# model.is_built is now True
# model.generator, model.feature_discriminator are now initialized

Pre-built Model Example

from gretel_synthetics.timeseries_dgan.dgan import DGAN
from gretel_synthetics.timeseries_dgan.config import DGANConfig
from gretel_synthetics.timeseries_dgan.transformations import ContinuousOutput
from gretel_synthetics.timeseries_dgan.config import Normalization

config = DGANConfig(max_sequence_len=20, sample_len=5, epochs=10)

# Pre-define outputs to build the model at initialization
attribute_outputs = [
    ContinuousOutput("attr0", Normalization.ZERO_ONE,
                     apply_feature_scaling=True,
                     apply_example_scaling=False,
                     global_min=0.0, global_max=1.0)
]
feature_outputs = [
    ContinuousOutput("feat0", Normalization.ZERO_ONE,
                     apply_feature_scaling=True,
                     apply_example_scaling=True,
                     global_min=0.0, global_max=100.0)
]

model = DGAN(config, attribute_outputs=attribute_outputs, feature_outputs=feature_outputs)
# model.is_built is True immediately

Related Pages

Implements Principle

Requires Environment

Uses Heuristic

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment