A Python package for distributed deep learning with a special focus on inverse problems in materials imaging.
stemdl
was used in the following (applied and fundamental) deep learning research projects:
- 3-D reconstruction of Structural Distortions from Electron Microscopy (Link to Paper)
- 27,600 V100 GPUs and 7MW(h) of Power to solve an age-old scientific inverse problem (Link to Paper and Medium story )
- YNet: a Physics-Constrainted and Semi-Supervised Learning Approach to Inverse Problems
See scripts folder for the following:
- stemdl_run.py:
Python script. Runs from the CLI to setup Neural Nets and start training/evaluation operations. - generate_json.py:
Python script. Generates .json files needed as input for stemdl_run.py
- inputs.py:
Classes to read training/evaluation data, create training batches, and image transformations.
Can handle I/O ops on TFRecords, numpy arrays, and lmdb files - network.py:
Classes to setup various kinds of Neural Nets (ConvNets, ResNets, etc...) - runtime.py:
Functions and Classes to perform (low-level) network training/evaluation - io_utils.py:
Functions to generate .json files for model architectures input files, hyperparameters, and training runs configurations - losses.py:
Functions to generate and manipulate loss functions - optimizers.py:
Optimizer setup and gradients pre-processing and reduction - automatic_loss_scaler.py:
Python module for dynamic loss scaling during fp16 training (taken as is from OpenSeq2Seq)
- numpy >= 1.13
- tensorflow >=1.2
- python 3.6
- horovod >=0.16
- CUDA compatible GPU >=1
Project not yet on Pypi. For now:
git clone
cd stemdl
pip install .