This repository contains the software framework for experiments conducted in a preprint of our paper, Complementary Electro-Ionic Reconstruction Probed by Machine Learning-assisted Noise Spectroscopy.
- TensorFlow >= 2.15.0
- Python3
- HDF5
- MPI
- Typical CUDA-available GPU machines (we used a server with 2 NVIDIA A6000ada GPUs)
- The system contains an AMD EPYC 7543 32-Core Processor, 2 NVIDIA A6000ada GPUs, and 256 GB memory.
- Training classifer model takes roughly 2.5~3 hours.
cluster.py receives a simulated PSD curve dataset stored in an HDF5 file and cluster them using DBSCAN algorithm. Each pair of the standard deviation and the onset position of oxygen vacancies is assigned with a cluster ID.
- Electron Sigma Values (rows): 1~11
- Onset Position of Traps (columns): 1~23
python cluster.pyreads the input HDF file, cluster them using DBSCAN, and generate the result as a png file as shown below.
gen.pycalculates PSD curves and prints out them.- The generated simulation data will be stored as a single HDF5 file. All samples corresponding to an individual setting will be stored as a single dataset under the root group.
- For each setting (a combination of electron sigma and trap on-set position), 100 samples are generated simulating 1,000,000 traps and 1,000,000 electrons generated based on the given statistics.
main.py classifies the given 'observed' PSD curves based on the clusters found by our Feature Finder. The classifier is a manually designed 1-D Convolutional Neural Network. This code is based on the basic DL framework from LMLS lab at Inha University. Please see the paper's supplementary document for detailed hyper-parameter settings used to train the neural network on simulation data.
python main.pyevaluates the test samples stored inobservation.binusing the neural network model stored incheckpoint_0.- To train a model from the scratch, delete
checkpoint_0and runpython main.py. Then, the program will begin the training and record the model at the end of every epoch.
- The Classifier program has been parallelized using MPI. If you have multiple GPUs on your system, you can train the neural network
mpirun -n 2 pyton main. Then, the training will be performed on 2 GPUs.
- Sunwoo Lee [email protected]
