Giter VIP home page Giter VIP logo

deep-learning-applied-to-seismic-data's Introduction

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.

deep-learning-applied-to-seismic-data's People

Contributors

mikhailiuk avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.