def run_gaussian_dataset_montecarlo(iterations: int=30, m: int=10000, n: int=128, param_list=None, epochs: int=300, batch_size: int=100, display_freq: int=1, optimizer='sgd', validation_split: float=0.2, shape_raw: List[int]=None, activation: t_activation='cart_relu', verbose: bool=False, do_all: bool=True, tensorboard: bool=False, polar: Optional[Union[(str, List[Optional[str]], Tuple[Optional[str]])]]=None, capacity_equivalent: bool=True, equiv_technique: str='ratio', dropout: Optional[float]=None, models: Optional[List[Model]]=None, plot_data: bool=True, early_stop: bool=False, shuffle: bool=True) -> str:
    "\n    This function is used to compare CVNN vs RVNN performance over statistical non-circular data.\n        1. Generates a complex-valued gaussian correlated noise with the characteristics given by the inputs.\n        2. It then runs a monte carlo simulation of several iterations of both CVNN and an equivalent RVNN model.\n        3. Saves several files into ./log/montecarlo/date/of/run/\n            3.1. run_summary.txt: Summary of the run models and data\n            3.2. run_data.csv: Full information of performance of iteration of each model at each epoch\n            3.3. complex_network_statistical_result.csv: Statistical results of all iterations of CVNN per epoch\n            3.4. real_network_statistical_result.csv: Statistical results of all iterations of RVNN per epoch\n            3.5. (Optional) `plot/` folder with the corresponding plots generated by MonteCarloAnalyzer.do_all()\n    :param iterations: Number of iterations to be done for each model\n    :param m: Total size of the dataset (number of examples)\n    :param n: Number of features / input vector\n    :param param_list: A list of len = number of classes.\n        Each element of the list is another list of len = 3 with values: [correlation_coeff, sigma_x, sigma_y]\n        Example for dataset type A of paper https://arxiv.org/abs/2009.08340:\n            param_list = [\n                [0.5, 1, 1],\n                [-0.5, 1, 1]\n            ]\n        Default: None will default to the example.\n    :param epochs: Number of epochs for each iteration\n    :param batch_size: Batch size at each iteration\n    :param display_freq: Frequency in terms of epochs of when to do a checkpoint.\n    :param optimizer: Optimizer to be used. Keras optimizers are not allowed.\n            Can be either cvnn.optimizers.Optimizer or a string listed in opt_dispatcher.\n    :param validation_split: float between 0 and 1. Fraction of the training data to be used as validation data.\n        The model will set apart this fraction of the training data, will not train on it, and will evaluate the loss\n            and any model metrics on this data at the end of each epoch.\n        The validation data is selected from the last samples in the x and y data provided, before shuffling.\n        This argument is not supported when x is a dataset, generator or keras.utils.Sequence instance.\n    :param shape_raw: List of sizes of each hidden layer.\n        For example [64] will generate a CVNN with one hidden layer of size 64.\n        Default None will default to example.\n    :param activation: Activation function to be used at each hidden layer\n    :param verbose: Different modes according to number:\n            - 0 or 'silent': No output at all\n            - 1 or False: Progress bar per iteration\n            - 2 or True or 'debug': Progress bar per epoch\n    :param tensorboard: If True, it will generate tensorboard outputs to check training values.\n    :param polar: Boolean weather the RVNN should receive real and imaginary part (False) or amplitude and phase (True)\n    :param do_all: If true (default) it creates a `plot/` folder with the plots generated by MonteCarloAnalyzer.do_all()\n    :param dropout: (float) Dropout to be used at each hidden layer. If None it will not use any dropout.\n    :param models: List of models to be compared.\n    :return: (string) Full path to the run_data.csv generated file.\n        It can be used by cvnn.data_analysis.SeveralMonteCarloComparison to compare several runs.\n    "
    if (param_list is None):
        param_list = [[0.3, 1, 1], [(- 0.3), 1, 1]]
    dataset = dp.CorrelatedGaussianCoeffCorrel(m, n, param_list, debug=False)
    print('Database loaded...')
    if (models is not None):
        return run_montecarlo(models=models, dataset=dataset, open_dataset=None, iterations=iterations, epochs=epochs, batch_size=batch_size, display_freq=display_freq, validation_split=validation_split, validation_data=None, verbose=verbose, polar=polar, do_all=do_all, tensorboard=tensorboard, do_conf_mat=False, plot_data=plot_data, early_stop=early_stop, shuffle=shuffle)
    else:
        return mlp_run_real_comparison_montecarlo(dataset=dataset, open_dataset=None, iterations=iterations, epochs=epochs, batch_size=batch_size, display_freq=display_freq, optimizer=optimizer, shape_raw=shape_raw, activation=activation, verbose=verbose, polar=polar, do_all=do_all, tensorboard=tensorboard, capacity_equivalent=capacity_equivalent, equiv_technique=equiv_technique, dropout=dropout, validation_split=validation_split, plot_data=plot_data)
This function is used to compare CVNN vs RVNN performance over statistical non-circular data.
    1. Generates a complex-valued gaussian correlated noise with the characteristics given by the inputs.
    2. It then runs a monte carlo simulation of several iterations of both CVNN and an equivalent RVNN model.
    3. Saves several files into ./log/montecarlo/date/of/run/
        3.1. run_summary.txt: Summary of the run models and data
        3.2. run_data.csv: Full information of performance of iteration of each model at each epoch
        3.3. complex_network_statistical_result.csv: Statistical results of all iterations of CVNN per epoch
        3.4. real_network_statistical_result.csv: Statistical results of all iterations of RVNN per epoch
        3.5. (Optional) `plot/` folder with the corresponding plots generated by MonteCarloAnalyzer.do_all()
:param iterations: Number of iterations to be done for each model
:param m: Total size of the dataset (number of examples)
:param n: Number of features / input vector
:param param_list: A list of len = number of classes.
    Each element of the list is another list of len = 3 with values: [correlation_coeff, sigma_x, sigma_y]
    Example for dataset type A of paper https://arxiv.org/abs/2009.08340:
        param_list = [
            [0.5, 1, 1],
            [-0.5, 1, 1]
        ]
    Default: None will default to the example.
:param epochs: Number of epochs for each iteration
:param batch_size: Batch size at each iteration
:param display_freq: Frequency in terms of epochs of when to do a checkpoint.
:param optimizer: Optimizer to be used. Keras optimizers are not allowed.
        Can be either cvnn.optimizers.Optimizer or a string listed in opt_dispatcher.
:param validation_split: float between 0 and 1. Fraction of the training data to be used as validation data.
    The model will set apart this fraction of the training data, will not train on it, and will evaluate the loss
        and any model metrics on this data at the end of each epoch.
    The validation data is selected from the last samples in the x and y data provided, before shuffling.
    This argument is not supported when x is a dataset, generator or keras.utils.Sequence instance.
:param shape_raw: List of sizes of each hidden layer.
    For example [64] will generate a CVNN with one hidden layer of size 64.
    Default None will default to example.
:param activation: Activation function to be used at each hidden layer
:param verbose: Different modes according to number:
        - 0 or 'silent': No output at all
        - 1 or False: Progress bar per iteration
        - 2 or True or 'debug': Progress bar per epoch
:param tensorboard: If True, it will generate tensorboard outputs to check training values.
:param polar: Boolean weather the RVNN should receive real and imaginary part (False) or amplitude and phase (True)
:param do_all: If true (default) it creates a `plot/` folder with the plots generated by MonteCarloAnalyzer.do_all()
:param dropout: (float) Dropout to be used at each hidden layer. If None it will not use any dropout.
:param models: List of models to be compared.
:return: (string) Full path to the run_data.csv generated file.
    It can be used by cvnn.data_analysis.SeveralMonteCarloComparison to compare several runs.
def run_gaussian_dataset_montecarlo(iterations: int=30, m: int=10000, n: int=128, param_list=None, epochs: int=300, batch_size: int=100, display_freq: int=1, optimizer='sgd', validation_split: float=0.2, shape_raw: List[int]=None, activation: t_activation='cart_relu', verbose: bool=False, do_all: bool=True, tensorboard: bool=False, polar: Optional[Union[(str, List[Optional[str]], Tuple[Optional[str]])]]=None, capacity_equivalent: bool=True, equiv_technique: str='ratio', dropout: Optional[float]=None, models: Optional[List[Model]]=None, plot_data: bool=True, early_stop: bool=False, shuffle: bool=True) -> str:
    "\n    This function is used to compare CVNN vs RVNN performance over statistical non-circular data.\n        1. Generates a complex-valued gaussian correlated noise with the characteristics given by the inputs.\n        2. It then runs a monte carlo simulation of several iterations of both CVNN and an equivalent RVNN model.\n        3. Saves several files into ./log/montecarlo/date/of/run/\n            3.1. run_summary.txt: Summary of the run models and data\n            3.2. run_data.csv: Full information of performance of iteration of each model at each epoch\n            3.3. complex_network_statistical_result.csv: Statistical results of all iterations of CVNN per epoch\n            3.4. real_network_statistical_result.csv: Statistical results of all iterations of RVNN per epoch\n            3.5. (Optional) `plot/` folder with the corresponding plots generated by MonteCarloAnalyzer.do_all()\n    :param iterations: Number of iterations to be done for each model\n    :param m: Total size of the dataset (number of examples)\n    :param n: Number of features / input vector\n    :param param_list: A list of len = number of classes.\n        Each element of the list is another list of len = 3 with values: [correlation_coeff, sigma_x, sigma_y]\n        Example for dataset type A of paper https://arxiv.org/abs/2009.08340:\n            param_list = [\n                [0.5, 1, 1],\n                [-0.5, 1, 1]\n            ]\n        Default: None will default to the example.\n    :param epochs: Number of epochs for each iteration\n    :param batch_size: Batch size at each iteration\n    :param display_freq: Frequency in terms of epochs of when to do a checkpoint.\n    :param optimizer: Optimizer to be used. Keras optimizers are not allowed.\n            Can be either cvnn.optimizers.Optimizer or a string listed in opt_dispatcher.\n    :param validation_split: float between 0 and 1. Fraction of the training data to be used as validation data.\n        The model will set apart this fraction of the training data, will not train on it, and will evaluate the loss\n            and any model metrics on this data at the end of each epoch.\n        The validation data is selected from the last samples in the x and y data provided, before shuffling.\n        This argument is not supported when x is a dataset, generator or keras.utils.Sequence instance.\n    :param shape_raw: List of sizes of each hidden layer.\n        For example [64] will generate a CVNN with one hidden layer of size 64.\n        Default None will default to example.\n    :param activation: Activation function to be used at each hidden layer\n    :param verbose: Different modes according to number:\n            - 0 or 'silent': No output at all\n            - 1 or False: Progress bar per iteration\n            - 2 or True or 'debug': Progress bar per epoch\n    :param tensorboard: If True, it will generate tensorboard outputs to check training values.\n    :param polar: Boolean weather the RVNN should receive real and imaginary part (False) or amplitude and phase (True)\n    :param do_all: If true (default) it creates a `plot/` folder with the plots generated by MonteCarloAnalyzer.do_all()\n    :param dropout: (float) Dropout to be used at each hidden layer. If None it will not use any dropout.\n    :param models: List of models to be compared.\n    :return: (string) Full path to the run_data.csv generated file.\n        It can be used by cvnn.data_analysis.SeveralMonteCarloComparison to compare several runs.\n    "
    if (param_list is None):
        param_list = [[0.3, 1, 1], [(- 0.3), 1, 1]]
    dataset = dp.CorrelatedGaussianCoeffCorrel(m, n, param_list, debug=False)
    print('Database loaded...')
    if (models is not None):
        return run_montecarlo(models=models, dataset=dataset, open_dataset=None, iterations=iterations, epochs=epochs, batch_size=batch_size, display_freq=display_freq, validation_split=validation_split, validation_data=None, verbose=verbose, polar=polar, do_all=do_all, tensorboard=tensorboard, do_conf_mat=False, plot_data=plot_data, early_stop=early_stop, shuffle=shuffle)
    else:
        return mlp_run_real_comparison_montecarlo(dataset=dataset, open_dataset=None, iterations=iterations, epochs=epochs, batch_size=batch_size, display_freq=display_freq, optimizer=optimizer, shape_raw=shape_raw, activation=activation, verbose=verbose, polar=polar, do_all=do_all, tensorboard=tensorboard, capacity_equivalent=capacity_equivalent, equiv_technique=equiv_technique, dropout=dropout, validation_split=validation_split, plot_data=plot_data)