Summary
==========================================================================================
Results files for "Deep Wavefront Shaping: Intelligence Control of Complex Scattering Responses with a Programmable Metasurface"

Authors: Benjamin W. Frazier, Thomas M. Antonsen, Jr., Steven M. Anlage, and Edward Ott 

This respository contains the trained models and captured results files that were used to generate the figures in the paper. The raw training data is not included here, as those are extremely large files.

Description of Files
=========================================================================================
Files with the extension ".h5" are hdf5 files that contain model training results, files with the extension ".mat", are Matlab data files that contain calculated statistics or correlation coefficients, and files without an extension are PyTorch model files that contain the various deep learning models.

Deep learning models and training results are identified by the model used (SequentialComplexCNN, TerrapinModelB, etc.), the "axb" flag indicates the binning state (2x2, 3x3, or 5x4), and the run flag provides the dataset identifier. 


The results files all end with "_results.h5", and contain the following :
1. train_loss: loss function for the training data, per epoch
2. train_acc: accuracy for the training data, per epoch
3. val_loss: loss function for the validation data, per epoch
4. val_acc: accuracy for the validation data, per epoch
5. model_name: string containing the model name
6. learning_rate: learning rate, per epoch
7. bandwidth: bandwidth of the local windows in Hz (nominally 10 MHz)
8. freqs: 
9. centerFreq: vector containing the positions of the local frequency windows in Hz
10. inputMaps: flag to indicate whether we are solving the forward problem (true) or inverse problem (false)
11. batch_size: batch size used during training
12. truthOutput: true output the model was trained on for the validation set, only captured during validation of the final trained model 
13. predictedOutput: predicted output from the model on the validation set,  only captured during validation of the final trained model 
14. predictedTrainingOutputs: predicted output from the model on the training set, only captured during validation of the final trained model 
15. truthTrainingOutputs: true output the model was trained on for the training set, only captured during validation of the final trained model 
16. notes: string containing any notes about the run
17. pMean: mean value of the input datasets
18. pStd: standard deviation of the input datasets


The online validation files all start with "online_validation", the file name indicates the binning flag as "axb", and a run identifier is included at the end of the file name. The data contained is:
1. "inf_error_x": Measured S21 for cases where there was a prediction error with the predicted metasurface commands applied
2. "inf_error_x_map" : Predicted metasurface configuration for this case
3. "total_errors": The total number of prediction errors
4. "inf_x": Measured S21 that was used to make the prediction (input to the deep learning network)
5. "inf_x_map": Metasurface configuration applied to generate the prediction input
6. "inf_x_bias": Random bias term for generating the random metasurface configuration