layers_dict = {
    "Input Layers": {
        "InputLayer": {
            "input_shape": {"type": "integer_list", "value": "[1,100]"},
            "dtype": {
                "type": "select",
                "options": ["float32", "float64", "int32"],
                "value": "float32",
            },
            "sparse": {"type": "boolean", "value": False},
            "class_name": "InputLayer",
        },
    },
    "Core Layers": {
        "Activation": {
            "activation": {
                "type": "select",
                "options": [
                    "elu",
                    "hardSigmoid",
                    "linear",
                    "relu",
                    "selu",
                    "sigmoid",
                    "softmax",
                    "softplus",
                    "softsign",
                    "tanh",
                ],
                "value": "relu",
            },
            "class_name": "Activation",
        },
        "Dense": {
            "units": {"type": "integer", "value": 100, "min": 1},
            "activation": {
                "type": "select",
                "options": [
                    "elu",
                    "hardSigmoid",
                    "linear",
                    "relu",
                    "selu",
                    "sigmoid",
                    "softmax",
                    "softplus",
                    "softsign",
                    "tanh",
                    None,
                ],
                "value": "relu",
            },
            "use_bias": {"type": "boolean", "value": True},
            "trainable": {"type": "boolean", "value": True},
            "kernel_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "glorotUniform",
            },
            "bias_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "zeros",
            },
            "kernel_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "bias_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "kernel_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            "bias_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            # "activity_regularizer": {"type": "select", "options": [None,  "L1L2"], "value": None},
            "class_name": "Dense",
        },
        "Dropout": {
            "rate": {"type": "float", "value": 0, "min": 0, "max": 1},
            "noise_shape": {"type": "integer_list", "value": None},
            # "seed": {"type": "integer", "value": None, "min": 0}, TODO
            "class_name": "Dropout",
        },
        "Embedding": {
            "input_dim": {"type": "integer", "value": 1, "min": 1},
            "output_dim": {"type": "integer", "value": 1, "min": 0},
            "embeddings_initializer": {
                "type": "select",
                "options": [
                    None,
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": None,
            },
            "embeddings_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            # "activity_regularizer": {"type": "select", "options": [None, "L1L2"], "value": None},
            "embeddings_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "mask_zero": {"type": "boolean", "value": False},
            "inputLength": {"type": "integer_list", "value": None},
            "class_name": "Embedding",
        },
        "Flatten": {
            "input_shape": {"type": "integer_list", "value": None},
            "batchInputShape": {"type": "integer_list", "value": None},
            "batchSize": {"type": "integer", "value": None, "min": 0},
            "dtype": {
                "type": "select",
                "options": ["float32", "int32", "bool"],
                "value": "float32",
            },
            "trainable": {"type": "boolean", "value": False},
            "updatable": {"type": "boolean", "value": False},
            "inputDType": {
                "type": "select",
                "options": ["float32", "int32", "bool"],
                "value": "float32",
            },
            "class_name": "Flatten",
        },
        "RepeatVector": {
            "n": {"type": "integer", "value": 1, "min": 0},
            "class_name": "RepeatVector",
        },
        "Permute": {
            "dims": {"type": "integer_list", "value": None},
            "class_name": "Permute",
        },
        "Reshape": {
            "targetShape": {"type": "integer_list", "value": None},
            "class_name": "Reshape",
        },
    },
    "Convolutional Layers": {
        "Conv1D": {
            "kernel_size": {"type": "integer_list", "value": None},
            "filters": {"type": "integer", "value": 1, "min": 1},
            "strides": {"type": "integer_list", "value": None},
            "padding": {
                "type": "select",
                "options": ["valid", "causal", "same"],
                "value": "valid",
            },
            "dataFormat": {
                "type": "select",
                "options": [None, "channels_last", "channels_first"],
                "value": None,
            },
            "dilationRate": {"type": "integer_list", "value": None},
            "activation": {
                "type": "select",
                "options": [
                    "elu",
                    "hardSigmoid",
                    "linear",
                    "relu",
                    "selu",
                    "sigmoid",
                    "softmax",
                    "softplus",
                    "softsign",
                    "tanh",
                    None,
                ],
                "value": "relu",
            },
            "use_bias": {"type": "boolean", "value": True},
            "kernel_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "glorotUniform",
            },
            "bias_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "zeros",
            },
            "kernel_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            "bias_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            # "activity_regularizer": {"type": "select", "options": [None, "L1L2"], "value": None},
            "kernel_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "bias_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "class_name": "Conv1D",
        },
        "Conv2D": {
            "kernel_size": {"type": "integer_list", "value": None},
            "filters": {"type": "integer", "value": 1, "min": 1},
            "strides": {"type": "integer_list", "value": None},
            "padding": {
                "type": "select",
                "options": ["valid", "causal", "same"],
                "value": "valid",
            },
            "dataFormat": {
                "type": "select",
                "options": [None, "channels_last", "channels_first"],
                "value": None,
            },
            "dilationRate": {"type": "integer_list", "value": None},
            "activation": {
                "type": "select",
                "options": [
                    "elu",
                    "hardSigmoid",
                    "linear",
                    "relu",
                    "selu",
                    "sigmoid",
                    "softmax",
                    "softplus",
                    "softsign",
                    "tanh",
                    None,
                ],
                "value": "relu",
            },
            "use_bias": {"type": "boolean", "value": True},
            "kernel_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "glorotUniform",
            },
            "bias_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "zeros",
            },
            "kernel_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            "bias_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            # "activity_regularizer": {"type": "select", "options": [None, "L1L2"], "value": None},
            "kernel_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "bias_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "class_name": "Conv2D",
        },
        "Conv2DTranspose": {
            "kernel_size": {"type": "integer_list", "value": None},
            "filters": {"type": "integer", "value": 1, "min": 1},
            "strides": {"type": "integer_list", "value": None},
            "padding": {
                "type": "select",
                "options": ["valid", "causal", "same"],
                "value": "valid",
            },
            "dataFormat": {
                "type": "select",
                "options": [None, "channels_last", "channels_first"],
                "value": None,
            },
            "dilationRate": {"type": "integer_list", "value": None},
            "activation": {
                "type": "select",
                "options": [
                    "elu",
                    "hardSigmoid",
                    "linear",
                    "relu",
                    "selu",
                    "sigmoid",
                    "softmax",
                    "softplus",
                    "softsign",
                    "tanh",
                    None,
                ],
                "value": "relu",
            },
            "use_bias": {"type": "boolean", "value": True},
            "kernel_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "glorotUniform",
            },
            "bias_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "zeros",
            },
            "kernel_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            "bias_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            # "activity_regularizer": {"type": "select", "options": [None, "L1L2"], "value": None},
            "kernel_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "bias_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "class_name": "Conv2DTranspose",
        },
        "Conv3D": {
            "kernel_size": {"type": "integer_list", "value": None},
            "filters": {"type": "integer", "value": 1, "min": 1},
            "strides": {"type": "integer_list", "value": None},
            "padding": {
                "type": "select",
                "options": ["valid", "causal", "same"],
                "value": "valid",
            },
            "dataFormat": {
                "type": "select",
                "options": [None, "channels_last", "channels_first"],
                "value": None,
            },
            "dilationRate": {"type": "integer_list", "value": None},
            "activation": {
                "type": "select",
                "options": [
                    "elu",
                    "hardSigmoid",
                    "linear",
                    "relu",
                    "selu",
                    "sigmoid",
                    "softmax",
                    "softplus",
                    "softsign",
                    "tanh",
                    None,
                ],
                "value": "relu",
            },
            "use_bias": {"type": "boolean", "value": True},
            "kernel_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "glorotUniform",
            },
            "bias_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "zeros",
            },
            "kernel_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            "bias_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            # "activity_regularizer": {"type": "select", "options": [None, "L1L2"], "value": None},
            "kernel_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "bias_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "class_name": "Conv3D",
        },
        "DepthwiseConv2D": {
            "kernel_size": {"type": "integer_list", "value": None},
            "filters": {"type": "integer", "value": 1, "min": 1},
            "strides": {"type": "integer_list", "value": None},
            "padding": {
                "type": "select",
                "options": ["valid", "causal", "same"],
                "value": "valid",
            },
            "dataFormat": {
                "type": "select",
                "options": [None, "channels_last", "channels_first"],
                "value": None,
            },
            "dilationRate": {"type": "integer_list", "value": None},
            "activation": {
                "type": "select",
                "options": [
                    "elu",
                    "hardSigmoid",
                    "linear",
                    "relu",
                    "selu",
                    "sigmoid",
                    "softmax",
                    "softplus",
                    "softsign",
                    "tanh",
                    None,
                ],
                "value": "relu",
            },
            "use_bias": {"type": "boolean", "value": True},
            "kernel_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "glorotUniform",
            },
            "bias_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "zeros",
            },
            "kernel_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            "bias_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            # "activity_regularizer": {"type": "select", "options": [None, "L1L2"], "value": None},
            "kernel_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "bias_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "class_name": "DepthwiseConv2D",
        },
        "Cropping2D": {
            "axes": {"type": "integer_list", "value": "[0]"},
            "dataFormat": {
                "type": "select",
                "options": [None, "channels_last", "channels_first"],
                "value": None,
            },
            "class_name": "Cropping2D",
        },
        "SeparableConv2D": {
            "kernel_size": {"type": "integer_list", "value": None},
            "filters": {"type": "integer", "value": 1, "min": 1},
            "strides": {"type": "integer_list", "value": None},
            "padding": {
                "type": "select",
                "options": ["valid", "causal", "same"],
                "value": "valid",
            },
            "dataFormat": {
                "type": "select",
                "options": [None, "channels_last", "channels_first"],
                "value": None,
            },
            "dilationRate": {"type": "integer_list", "value": None},
            "depth_multiplier": {"type": "integer", "value": 1, "min": 1},
            "activation": {
                "type": "select",
                "options": [
                    "elu",
                    "hardSigmoid",
                    "linear",
                    "relu",
                    "selu",
                    "sigmoid",
                    "softmax",
                    "softplus",
                    "softsign",
                    "tanh",
                    None,
                ],
                "value": "relu",
            },
            "use_bias": {"type": "boolean", "value": True},
            "depthwise_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "glorotUniform",
            },
            "bias_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "zeros",
            },
            "depthwise_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            "bias_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            # "activity_regularizer": {"type": "select", "options": [None, "L1L2"], "value": None},
            "depthwise_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "bias_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "pointwise_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "glorotUniform",
            },
            "pointwise_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            "pointwise_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "class_name": "SeparableConv2D",
        },
        "UpSampling2D": {
            "size": {"type": "integer_list", "value": "[2,2]"},
            "dataFormat": {
                "type": "select",
                "options": [None, "channels_last", "channels_first"],
                "value": None,
            },
            "interpolation": {
                "type": "select",
                "options": ["nearest", "bilinear"],
                "value": "nearest",
            },
            "class_name": "UpSampling2D",
        },
    },
    "Merge Layers": {
        "Add": {
            "dtype": {
                "type": "select",
                "options": ["float32", "int32", "bool"],
                "value": "float32",
            },
            "trainable": {"type": "boolean", "value": False},
            "updatable": {"type": "boolean", "value": False},
            "class_name": "Add",
        },
        "Average": {
            "dtype": {
                "type": "select",
                "options": ["float32", "int32", "bool"],
                "value": "float32",
            },
            "trainable": {"type": "boolean", "value": False},
            "updatable": {"type": "boolean", "value": False},
            "class_name": "Average",
        },
        "Concatenate": {
            "axis": {"type": "integer", "value": -1},
            "class_name": "Concatenate",
        },
        "Maximum": {
            "dtype": {
                "type": "select",
                "options": ["float32", "int32", "bool"],
                "value": "float32",
            },
            "trainable": {"type": "boolean", "value": False},
            "updatable": {"type": "boolean", "value": False},
            "class_name": "Maximum",
        },
        "Minimum": {
            "dtype": {
                "type": "select",
                "options": ["float32", "int32", "bool"],
                "value": "float32",
            },
            "trainable": {"type": "boolean", "value": False},
            "updatable": {"type": "boolean", "value": False},
            "class_name": "Minimum",
        },
        "Multiply": {
            "dtype": {
                "type": "select",
                "options": ["float32", "int32", "bool"],
                "value": "float32",
            },
            "trainable": {"type": "boolean", "value": False},
            "updatable": {"type": "boolean", "value": False},
            "class_name": "Multiply",
        },
        "Dot": {
            "axes": {"type": "integer_list", "value": "[-1]"},
            "normalize": {"type": "boolean", "value": False},
            "class_name": "Dot",
        },
    },
    "Normalization Layers": {
        "BatchNormalization": {
            "axis": {"type": "integer", "value": -1},
            "momentum": {"type": "float", "value": 0.99},
            "epsilon": {"type": "float", "value": 0.001},
            "center": {"type": "boolean", "value": True},
            "scale": {"type": "boolean", "value": True},
            "beta_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "zeros",
            },
            "gamma_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "ones",
            },
            "moving_mean_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "zeros",
            },
            "moving_variance_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "ones",
            },
            "beta_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            "gamma_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            "beta_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "gamma_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "class_name": "BatchNormalization",
        },
    },
    "Pooling Layers": {
        "AveragePooling1D": {
            "pool_size": {"type": "integer", "value": None},
            "strides": {"type": "integer", "value": None},
            "padding": {
                "type": "select",
                "options": ["valid", "causal", "same"],
                "value": "valid",
            },
            "class_name": "AveragePooling1D",
        },
        "AveragePooling2D": {
            "pool_size": {"type": "integer_list", "value": None},
            "strides": {"type": "integer_list", "value": None},
            "padding": {
                "type": "select",
                "options": ["valid", "causal", "same"],
                "value": "valid",
            },
            "dataFormat": {
                "type": "select",
                "options": [None, "channels_last", "channels_first"],
                "value": None,
            },
            "class_name": "AveragePooling2D",
        },
        "GlobalAveragePooling1D": {
            "dtype": {
                "type": "select",
                "options": ["float32", "int32", "bool"],
                "value": "float32",
            },
            "trainable": {"type": "boolean", "value": False},
            "updatable": {"type": "boolean", "value": False},
            "class_name": "GlobalAveragePooling1D",
        },
        "GlobalAveragePooling2D": {
            "dataFormat": {
                "type": "select",
                "options": [None, "channels_last", "channels_first"],
                "value": None,
            },
            "class_name": "GlobalAveragePooling2D",
        },
        "GlobalMaxPooling1D": {
            "dtype": {
                "type": "select",
                "options": ["float32", "int32", "bool"],
                "value": "float32",
            },
            "trainable": {"type": "boolean", "value": False},
            "updatable": {"type": "boolean", "value": False},
            "class_name": "GlobalMaxPooling1D",
        },
        "GlobalMaxPooling2D": {
            "dataFormat": {
                "type": "select",
                "options": [None, "channels_last", "channels_first"],
                "value": None,
            },
            "class_name": "GlobalMaxPooling2D",
        },
        "MaxPooling1D": {
            "pool_size": {"type": "integer", "value": None},
            "strides": {"type": "integer", "value": None},
            "padding": {
                "type": "select",
                "options": ["valid", "causal", "same"],
                "value": "valid",
            },
            "class_name": "MaxPooling1D",
        },
        "MaxPooling2D": {
            "pool_size": {"type": "integer_list", "value": None},
            "strides": {"type": "integer_list", "value": None},
            "padding": {
                "type": "select",
                "options": ["valid", "causal", "same"],
                "value": "valid",
            },
            "dataFormat": {
                "type": "select",
                "options": [None, "channels_last", "channels_first"],
                "value": None,
            },
            "class_name": "MaxPooling2D",
        },
    },
    "Recurrent Layers": {
        "GRU": {
            "units": {"type": "integer", "value": 100, "min": 1},
            "activation": {
                "type": "select",
                "options": [
                    "elu",
                    "hardSigmoid",
                    "linear",
                    "relu",
                    "selu",
                    "sigmoid",
                    "softmax",
                    "softplus",
                    "softsign",
                    "tanh",
                    None,
                ],
                "value": "relu",
            },
            "recurrent_activation": {
                "type": "select",
                "options": [
                    "elu",
                    "hardSigmoid",
                    "linear",
                    "relu",
                    "selu",
                    "sigmoid",
                    "softmax",
                    "softplus",
                    "softsign",
                    "tanh",
                    None,
                ],
                "value": "hardSigmoid",
            },
            "use_bias": {"type": "boolean", "value": True},
            "kernel_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "glorotUniform",
            },
            "recurrent_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "orthogonal",
            },
            "bias_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "zeros",
            },
            "kernel_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            "recurrent_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            "bias_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            # "activity_regularizer": {"type": "select", "options": [None, "L1L2"], "value": None},
            "kernel_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "recurrent_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "bias_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "dropout": {"type": "float", "value": 0.0},
            "recurrent_dropout": {"type": "float", "value": 0.0},
            "return_sequences": {"type": "boolean", "value": False},
            "return_state": {"type": "boolean", "value": False},
            "go_backwards": {"type": "boolean", "value": False},
            # "stateful": {"type": "boolean", "value": False},
            "unroll": {"type": "boolean", "value": False},
            "reset_after": {"type": "boolean", "value": False},
            "class_name": "GRU",
        },
        "GRUCell": {
            "units": {"type": "integer", "value": 100, "min": 1},
            "activation": {
                "type": "select",
                "options": [
                    "elu",
                    "hardSigmoid",
                    "linear",
                    "relu",
                    "selu",
                    "sigmoid",
                    "softmax",
                    "softplus",
                    "softsign",
                    "tanh",
                    None,
                ],
                "value": "relu",
            },
            "recurrent_activation": {
                "type": "select",
                "options": [
                    "elu",
                    "hardSigmoid",
                    "linear",
                    "relu",
                    "selu",
                    "sigmoid",
                    "softmax",
                    "softplus",
                    "softsign",
                    "tanh",
                    None,
                ],
                "value": "hardSigmoid",
            },
            "use_bias": {"type": "boolean", "value": True},
            "kernel_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "glorotUniform",
            },
            "recurrent_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "orthogonal",
            },
            "bias_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "zeros",
            },
            "kernel_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            "recurrent_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            "bias_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            "kernel_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "recurrent_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "bias_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "dropout": {"type": "float", "value": 0.0},
            "recurrent_dropout": {"type": "float", "value": 0.0},
            "reset_after": {"type": "boolean", "value": False},
            "class_name": "GRUCell",
        },
        "LSTM": {
            "units": {"type": "integer", "value": 100, "min": 1},
            "activation": {
                "type": "select",
                "options": [
                    "elu",
                    "hardSigmoid",
                    "linear",
                    "relu",
                    "selu",
                    "sigmoid",
                    "softmax",
                    "softplus",
                    "softsign",
                    "tanh",
                    None,
                ],
                "value": "relu",
            },
            "recurrent_activation": {
                "type": "select",
                "options": [
                    "elu",
                    "hardSigmoid",
                    "linear",
                    "relu",
                    "selu",
                    "sigmoid",
                    "softmax",
                    "softplus",
                    "softsign",
                    "tanh",
                    None,
                ],
                "value": "hard_sigmoid",
            },
            "use_bias": {"type": "boolean", "value": True},
            "kernel_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "glorotUniform",
            },
            "recurrent_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "orthogonal",
            },
            "bias_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "zeros",
            },
            "unit_forget_bias": {"type": "boolean", "value": True},
            "kernel_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            "recurrent_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            "bias_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            # "activity_regularizer": {"type": "select", "options": [None, "L1L2"], "value": None},
            "kernel_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "recurrent_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "bias_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "dropout": {"type": "float", "value": 0.0},
            "recurrent_dropout": {"type": "float", "value": 0.0},
            "return_sequences": {"type": "boolean", "value": False},
            "return_state": {"type": "boolean", "value": False},
            "go_backwards": {"type": "boolean", "value": False},
            "stateful": {"type": "boolean", "value": False},
            "unroll": {"type": "boolean", "value": False},
            "class_name": "LSTM",
        },
        "LSTMCell": {
            "units": {"type": "integer", "value": 100, "min": 1},
            "activation": {
                "type": "select",
                "options": [
                    "elu",
                    "hardSigmoid",
                    "linear",
                    "relu",
                    "selu",
                    "sigmoid",
                    "softmax",
                    "softplus",
                    "softsign",
                    "tanh",
                    None,
                ],
                "value": "relu",
            },
            "recurrent_activation": {
                "type": "select",
                "options": [
                    "elu",
                    "hardSigmoid",
                    "linear",
                    "relu",
                    "selu",
                    "sigmoid",
                    "softmax",
                    "softplus",
                    "softsign",
                    "tanh",
                    None,
                ],
                "value": "hard_sigmoid",
            },
            "use_bias": {"type": "boolean", "value": True},
            "kernel_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "glorotUniform",
            },
            "recurrent_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "orthogonal",
            },
            "bias_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "zeros",
            },
            "unit_forget_bias": {"type": "boolean", "value": True},
            "kernel_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            "recurrent_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            "bias_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            "kernel_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "recurrent_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "bias_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "dropout": {"type": "float", "value": 0.0},
            "recurrent_dropout": {"type": "float", "value": 0.0},
            "class_name": "LSTMCell",
        },
        "RNN": {
            "return_sequences": {"type": "boolean", "value": False},
            "return_state": {"type": "boolean", "value": False},
            "go_backwards": {"type": "boolean", "value": False},
            "stateful": {"type": "boolean", "value": False},
            "unroll": {"type": "boolean", "value": False},
            "class_name": "RNN",
        },
        "SimpleRNN": {
            "units": {"type": "integer", "value": 100, "min": 1},
            "activation": {
                "type": "select",
                "options": [
                    "elu",
                    "hardSigmoid",
                    "linear",
                    "relu",
                    "selu",
                    "sigmoid",
                    "softmax",
                    "softplus",
                    "softsign",
                    "tanh",
                    None,
                ],
                "value": "relu",
            },
            "use_bias": {"type": "boolean", "value": True},
            "kernel_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "glorotUniform",
            },
            "recurrent_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "orthogonal",
            },
            "bias_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "zeros",
            },
            "kernel_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            "recurrent_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            "bias_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            # "activity_regularizer": {"type": "select", "options": [None, "L1L2"], "value": None},
            "kernel_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "recurrent_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "bias_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "dropout": {"type": "float", "value": 0.0},
            "recurrent_dropout": {"type": "float", "value": 0.0},
            "return_sequences": {"type": "boolean", "value": False},
            "return_state": {"type": "boolean", "value": False},
            "go_backwards": {"type": "boolean", "value": False},
            "stateful": {"type": "boolean", "value": False},
            "unroll": {"type": "boolean", "value": False},
            "class_name": "SimpleRNN",
        },
        "SimpleRNNCell": {
            "units": {"type": "integer", "value": 100, "min": 1},
            "activation": {
                "type": "select",
                "options": [
                    "elu",
                    "hardSigmoid",
                    "linear",
                    "relu",
                    "selu",
                    "sigmoid",
                    "softmax",
                    "softplus",
                    "softsign",
                    "tanh",
                    None,
                ],
                "value": "relu",
            },
            "use_bias": {"type": "boolean", "value": True},
            "kernel_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "glorotUniform",
            },
            "recurrent_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "orthogonal",
            },
            "bias_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "zeros",
            },
            "kernel_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            "recurrent_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            "bias_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            "kernel_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "recurrent_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "bias_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "dropout": {"type": "float", "value": 0.0},
            "recurrent_dropout": {"type": "float", "value": 0.0},
            "class_name": "SimpleRNNCell",
        },
        "StackedRNNCells": {
            "units": {"type": "integer", "value": 100, "min": 1},
            "activation": {
                "type": "select",
                "options": [
                    "elu",
                    "hardSigmoid",
                    "linear",
                    "relu",
                    "selu",
                    "sigmoid",
                    "softmax",
                    "softplus",
                    "softsign",
                    "tanh",
                    None,
                ],
                "value": "relu",
            },
            "use_bias": {"type": "boolean", "value": True},
            "kernel_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "glorotUniform",
            },
            "recurrent_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "orthogonal",
            },
            "bias_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "zeros",
            },
            "kernel_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            "recurrent_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            "bias_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            "kernel_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "recurrent_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "bias_constraint": {
                "type": "select",
                "options": [None, "maxNorm", "minMaxNorm", "nonNeg", "unitNorm"],
                "value": None,
            },
            "dropout": {"type": "float", "value": 0.0},
            "recurrent_dropout": {"type": "float", "value": 0.0},
            "class_name": "StackedRNNCells",
        },
    },
    # TODO
    #  "Layers wrappers": {
    #      "Bidirectional": {
    #          "merge_mode": {
    #              "type": "select",
    #              "options": ["concat", "sum", "mul", "ave", None],
    #              "value": "concat"
    #          }, "class_name": "Bidirectional"
    #      },
    #      "TimeDistributed": {"class_name": "TimeDistributed"}
    #
    #  },
    "Advanced Activations Layers": {
        "ELU": {"alpha": {"type": "float", "value": 1.0}, "class_name": "ELU"},
        "LeakyReLU": {
            "alpha": {"type": "float", "value": 1.0},
            "class_name": "LeakyReLU",
        },
        "Softmax": {"axis": {"type": "integer", "value": -1}, "class_name": "Softmax"},
        "ThresholdedReLU": {
            "theta": {"type": "float", "value": None},
            "class_name": "ThresholdedReLU",
        },
        "PReLU": {
            "alpha_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "zeros",
            },
            "alpha_regularizer": {
                "type": "select",
                "options": [None, "L1L2"],
                "value": None,
            },
            "shared_axes": {"type": "integer_list", "value": None},
            "class_name": "PReLU",
        },
    },
    "Loss Functions": {
        "Loss": {
            "function": {
                "type": "select",
                "options": [
                    "mean_squared_error",
                    "absolute_difference",
                    "cosine_distance",
                    "hinge_loss",
                    "huber_loss",
                    "log_loss",
                    "sigmoid_cross_entropy",
                    "softmax_cross_entropy",
                    "sparse_softmax_cross_entropy",
                    "mean_pairwise_squared_error",
                ],
                "value": "mean_squared_error",
            },
            "class_name": "Loss",
        },
    },
    "Canned Models": {
        "DNN": {
            "hidden_layers": {"type": "integer_list", "value": "[100]"},
            "activation_fn": {
                "type": "select",
                "options": [
                    "elu",
                    "relu",
                    "selu",
                    "sigmoid",
                    "softmax",
                    "softsign",
                    "tanh",
                    None,
                ],
                "value": "relu",
            },
            "kernel_initializer": {
                "type": "select",
                "options": [
                    "glorotNormal",
                    "glorotUniform",
                    "heNormal",
                    "identity",
                    "leCunNormal",
                    "ones",
                    "orthogonal",
                    "randomNormal",
                    "randomUniform",
                    "truncatedNormal",
                    "varianceScaling",
                    "zeros",
                ],
                "value": "glorotUniform",
            },
            "l1_regularization": {
                "type": "float",
                "value": 0,
            },
            "l2_regularization": {
                "type": "float",
                "value": 0,
            },
            "dropout": {
                "type": "float",
                "value": 0,
            },
            "batch_norm": {
                "type": "boolean",
                "value": False,
            },
            "class_name": "DNN",
        },
        "Linear": {
            "sparse_combiner": {
                "type": "select",
                "value": "sum",
                "options": ["sum", "mean", "sqrtn"],
            },
            "class_name": "Linear",
        },
    },
}
