-
Notifications
You must be signed in to change notification settings - Fork 7
Seismic data interpolation. C++ implementation.
License
mikhailiuk/Deep-Learning-Applied-To-Seismic-Data
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
If using the project, please cite as follows: Mikhailiuk A. and Faul A. 2018. "Deep Learning Applied To Seismic Signal Interpolation". EAGE2018. ============================================================================================ ============================================================================================ Author: Aliaksei Mikhailiuk Date: 20.07.2017 Contains: Deep Learning and Parallelisation applied to seismic data. ============================================================================================ ============================================================================================ The enclosed program contains an implementaitoin of a neural network in C++ and OpenMP. ============================================================================================ The head folder contains: config: folder with a configuration file input: folder with input files (data) obj: folder for object files (generated by compiler) output: folder for an output of the algorithm (contains exmaple output - running the algorithm with the configuration specified in config.cfg. There are two folders, one ending with fu and another with es. Fu - fully trained (not in the minimum of the validation error (2000 epochs)), es - early stop (when the network reaches the minima)) scripts: supplementary scripts for postprocessing of the results src: folder with the source code of the algorithm documentation: folder with documentation produced with doxygen containing code description. to view the documentation go to the ./documentation/html/ and open index.html Makefile: makefile readme.txt: read me file ============================================================================================ Note: every folder contains associated readme.txt file explaining the contents, or has a well documented code. ============================================================================================ ============================================================================================ ============================================================================================ Compilation: ============================================================================================ make ============================================================================================ ============================================================================================ Run (generates a folder with a unique id in the output folder): ============================================================================================ make run ============================================================================================ Note: to change the number of threads, go to Makefile and change OMP_NUM_THREADS (tested range is 1 to 4) ============================================================================================ ============================================================================================ ============================================================================================ Visualise results in the output folder (requires matlab): ============================================================================================ make plot ============================================================================================ ============================================================================================ Required libraries ============================================================================================ libconfig.h++ omp.h ============================================================================================ ============================================================================================ Implementation details: ============================================================================================ The implemented algorithms include: simple autoencoder with one hidden layer, two regularised autoencoders i.e. denoizing and contractive, and a deep autoencoder with a variable number and size of the hidden layers. The final implementation allows the user to specify the model parameters in a configuration file. A detailed output is produced in the output folder. The key results written in the .dat files can be visualised using a MatLab script. Furthermore model parameters are saved along with the output results. Thus a new model can be initialised from the saved parameters and training can be continued. Saved features can also be reused for other tasks - e.g. classification. In order to automate the process of results collection a number of bash scripts was written. T is documented using doxygen and a detailed description of files and functions is placed in index.html in the html folder. Detailed documentation on usage and scripts is given in the readme file in the head folder. OpenMP: The same serial code optimisations were applied to all parallel approach. These included: compiler flags, loop unrolling, loop blocking, single precision calculations, elimination of redundant variables, hoisting out computations from for loops and inline functions. Mainly optimisations were aimed for reducing expensive memory access operation and minimising the number of cache misses. Different workload distributions were tried and the best preformance is achieved when guided is used on all loops. One of the technical points taken into account is that when C++ classes are used the memory must be set to shared by default. This brings complications to loop counters updates. One more point is that when the functions are called from the parallel region all variable declared in these functions end up private. Thus points of explicit synchronisation are required in order to ensure memory consistency.
About
Seismic data interpolation. C++ implementation.
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published