Correlated Noise¶
Note
This results are based on the paper published here [CIT2020BARRACHINA]. Information about the network models and the dataset can be found there.
This results can be replicated by running the following code (changing the input parameters when it corresponds):
from cvnn.montecarlo import run_gaussian_dataset_montecarlo
run_gaussian_dataset_montecarlo(iterations=30, m=10000, n=128, param_list=None,
epochs=300, batch_size=100, display_freq=1, optimizer='adam',
shape_raw=None, activation='cart_relu', debug=False,
polar=False, do_all=True, dropout=0.5)
Note
Results will be differents to those published because of the following reasons (Fixed on the ArXiv version):
 Since version 0.2.89 the default real mlp model changed using a new definition that will be published in a new article.
 Since version 0.3.48 cvnn started using TensorFlow optimizer which averages gradients by it’s batch size according to this post. This issue was raised officially.
 Default optimizer changed to adam.
 As the dataset is generated randomly. This means two independent runs of
run_gaussian_dataset_montecarlo
may not have the same confidence intervals and results.  Disclaimer: All comparisons with a parameter variation was done with the same dataset.
 As the dataset is generated randomly. This means two independent runs of
Simulation Results
Method Documentation

run_gaussian_dataset_montecarlo
(iterations=1000, m=10000, n=128, param_list=None, epochs=150, batch_size=100, display_freq=1, optimizer='Adam', validation_split=0.2, shape_raw=None, activation='cart_relu', debug=False, polar=False, do_all=True, dropout=None)¶ This function is used to compare CVNN vs RVNN performance over statistical noncircular data.
Generates a complexvalued gaussian correlated noise with the characteristics given by the inputs.
It then runs a monte carlo simulation of several iterations of both CVNN and an equivalent RVNN model.
Saves several files into
./log/montecarlo/date/of/run/
run_summary.txt
: Summary of the run models and datarun_data.csv
: Full information of performance of iteration of each model at each epochcomplex_network_statistical_result.csv
: Statistical results of all iterations of CVNN per epochreal_network_statistical_result.csv
: Statistical results of all iterations of RVNN per epoch (Optional)
plot/
folder with the corresponding plots generated byMonteCarloAnalyzer.do_all()
Parameters:  iterations – Number of iterations to be done for each model
 m – Total size of the dataset (number of examples)
 n – Number of features / input vector
 param_list –
A list of len = number of classes. Each element of the list is another list of len = 3 with values: [\(\rho\), \(\sigma_x^2\), \(\sigma_y^2\)] Example for dataset type A of this paper:
param_list = [ [0.5, 1, 1], [0.5, 1, 1] ]
Default:
None
will default to the example.  epochs – Number of epochs for each iteration
 batch_size – Batch size at each iteration
 display_freq – Frequency in terms of epochs of when to do a checkpoint.
 optimizer – Optimizer to be used. Keras optimizers are not allowed. Can be either cvnn.optimizers.Optimizer or a string listed in opt_dispatcher.
 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.
 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.  activation – Activation function to be used at each hidden layer
 debug –
 tensorboard – If True, it will generate tensorboard outputs to check training values.
 polar – Boolean weather the RVNN should receive real and imaginary part (
False
) or amplitude and phase (True
)  do_all – If true (default) it creates a
plot/
folder with the plots generated byMonteCarloAnalyzer.do_all()
 dropout – (float) Dropout to be used at each hidden layer. If None it will not use any dropout.
Returns: (string) Full path to the
run_data.csv
generated file. It can be used bycvnn.data_analysis.SeveralMonteCarloComparison
to compare several runs.
[CIT2020BARRACHINA]  Jose Agustin Barrachina, Chenfang Ren, Christele Morisseau, Gilles Vieillard, JeanPhilippe Ovarlez “ComplexValued vs. RealValued Neural Networks for Classification Perspectives: An Example on NonCircular Data” arXiv:2009.08340 ML Stat, Sep. 2020. Available: https://arxiv.org/abs/2009.08340. 