Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
df120ee
Add 2Dos in Readme and comments in peaks/peaks.cfg
Jul 9, 2019
6934e6f
Make todolist from Readme tasks
Jul 9, 2019
1c46191
Clang-format the whole project for readability
Jul 9, 2019
8d1558a
Add SOLIDs to Readme
Jul 9, 2019
62cade6
Add CHANGELOG and format README
Jul 9, 2019
72abcfd
Add .vscode and tags to gitignore
Jul 9, 2019
46422eb
Update README.md
Jul 10, 2019
1969454
Update README.md
Jul 10, 2019
7ed2621
Remove tags file from git repo without deleting it locally
Jul 10, 2019
06a3fa8
Switch to Google's code style
Jul 10, 2019
788cb0c
Add .idea to .gitignore
Jul 11, 2019
4c7b8ec
Add comment to explain .idea exclusion to .gitignore
Jul 11, 2019
617ed0b
Merge pull request #4 from rscircus/feature/demo_correction
Jul 11, 2019
2631d36
Fix linebreak according to comments in review
Jul 12, 2019
58caf09
Merge branch 'develop' into feature/todo_roland
Jul 12, 2019
71c65db
Update README.md
Jul 12, 2019
a628d11
Merge pull request #1 from rscircus/feature/todo_roland
Jul 13, 2019
0abbaee
Walk through main and understand / add TODOs
Jul 10, 2019
f9b8c51
Add full finite differences as option
Jul 10, 2019
7f25feb
Revision after code style change in develop
Jul 12, 2019
cf67149
Update README.md
Jul 12, 2019
813c5c9
Identify Simultaneous Layer-Parallel Training algorithm in main.cpp
Jul 12, 2019
b75783b
Add .idea to .gitignore
Jul 11, 2019
60d270b
Slash adjoint dot test and full finite differences
Jul 13, 2019
3ca3692
Enhance readability of STDOUT
Jul 14, 2019
bd265a3
Add comment on optimization loop
Jul 14, 2019
af5a012
Fix whitespace
Jul 14, 2019
91f3f44
Merge pull request #3 from rscircus/feature/main_refactoring
Jul 14, 2019
79d5437
Fix null pointer constant in HessianApprox
Jul 14, 2019
cf65620
Write output file in same folder where main is called.
Jul 23, 2019
bfeba57
Update testing script and output files.
Jul 23, 2019
63a0d5b
Update peaks example config.
Jul 23, 2019
4910a53
Update testing script and output files.
Jul 23, 2019
e4f4582
Write output file in same folder where main is called.
Jul 23, 2019
5822b85
Add list of contributors to README
Jul 23, 2019
f76f63f
Add license and paper header
Jul 23, 2019
85f6622
Initialize hessian with NULL
Jul 23, 2019
289a388
Merge branch 'master' into develop
Jul 23, 2019
9be5dd6
Update email address in Readme.me Contributors
steffi7574 Jul 23, 2019
713d1ac
Merge pull request #3 from steffi7574/develop
Jul 23, 2019
30dbd62
Merge pull request #5 from steffi7574/fix/EmailAddress
Jul 24, 2019
ae5160a
Merge pull request #6 from steffi7574/develop
Jul 24, 2019
c95ce68
Merge pull request #4 from steffi7574/fix/NullPointerConstant
steffi7574 Jul 25, 2019
ff85f78
Merge pull request #7 from steffi7574/develop
steffi7574 Jul 25, 2019
0394990
Merge branch 'master' of https://github.com/steffi7574/DNN_PinT
Jul 25, 2019
969d65c
Minor comment changes in main
Jul 25, 2019
d7c0fbf
Adding some comments for Network and Layer headers.
Aug 20, 2019
16f3fc5
more comments
Aug 20, 2019
6978cdd
more comments
Aug 20, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
# cpp
build/
*out*
*.o
*.pyc
*run_*
*optim.dat
main

# Ignore IDE configurations
.idea
.vscode
tags
17 changes: 17 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Changelog
All notable high-level changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [1.0.1] - 2019.07.09
### Added
- This CHANGELOG file.
- Format project using `clang-project`
- README contains WIP elements, which will be eliminated after completion

## [1.0.0] - 2019.07.09
### Added
- This project as of state of the following publication: TODO
19 changes: 13 additions & 6 deletions Readme.md → README.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,26 @@
# Layer-parallel training of deep residual neural networks
# Layer-parallel training of deep residual neural networks

This code performs layer-parallel training of deep neural networks of residual type. It utilizes the parallel-in-time software library [XBraid](https://github.com/XBraid/xbraid) to distribute layers of the network to different compute units. Instead of sequential forward and backward propagation through the network, iterative multigrid udpates are performed in parallel to solve for the network propagation and the training simultaneously. See the paper [Guenther et al.](https://arxiv.org/pdf/1812.04352.pdf) for a describtion of the method and all details.

## Build

The repository includes XBraid as a submodule. To clone both, use either `git clone --recurse-submodules [...]` for Git version >= 2.13, or `git clone [...]` followed by `cd xbraid`, `git submodule init` and `git submodule update` for older Git versions.
The repository includes XBraid as a submodule. To clone both, use either `git clone --recurse-submodules [...]` for Git version \>= 2.13, or `git clone [...]` followed by `cd xbraid`, `git submodule init` and `git submodule update` for older Git versions.

Type `make` in the main directory to build both the code and the XBraid library.
Type `make` in the main directory to build both the code and the XBraid library.

## Run

Test cases are located in the 'examples/' subfolder. Each example contains a `*.cfg` that holds configuration options for the current example dataset, the layer-parallelization with XBraid, and the optimization method and parameters.
Test cases are located in the 'examples/' subfolder. Each example contains a `*.cfg` that holds configuration options for the current example dataset, the layer-parallelization with XBraid, and the optimization method and parameters.

Run the test cases by callying './main' with the corresponding configuration file, e.g. `./main examples/peaks/peaks.cfg`
Run the test cases by callying './main' with the corresponding configuration file, e.g. `./main examples/peaks/peaks.cfg`

## Output
An optimization history file 'optim.dat' will be flushed to the examples subfolder.

An optimization history file 'optim.dat' will be flushed to the examples subfolder.

## Contributors

* Stefanie Guenther <guenther5@llnl.gov>
* Eric C. Cyr <eccyr@sandia.gov>
* J.B. Schroder <jbschroder@unm.edu>
* Roland A. Siegbert <roland.siegbert@rwth-aachen.de>
24 changes: 15 additions & 9 deletions examples/peaks/peaks.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
################################

# relative data folder location
datafolder = examples/peaks
datafolder = ./
# filename of training data feature vectors
ftrain_ex = features_training.dat
# filename of training data labels/classes
Expand Down Expand Up @@ -35,7 +35,7 @@ nchannels = 8
# number of layers (including opening layer and classification layer) (nlayer >= 3 !)
nlayers = 32
# final time
T = 5.0
T = 1.0
# Activation function ("tanh" or "ReLu" or "SmoothReLu")
activation = SmoothReLu
# Type of network ("dense" the default, or "convolutional")
Expand All @@ -47,7 +47,7 @@ type_openlayer = activate
# factor for scaling initial opening layer weights and bias
weights_open_init = 1e-3
# factor for scaling initial weights and bias of intermediate layers
weights_init = 0e-3
weights_init = 1e-3
# factor for scaling initial classification weights and bias
weights_class_init = 1e-3

Expand All @@ -66,7 +66,7 @@ braid_maxlevels = 10
# minimum allowed coarse time time grid size (values in 10-30 are usually best)
braid_mincoarse = 10
# maximum number of iterations
braid_maxiter = 15
braid_maxiter = 2
# absolute tolerance
braid_abstol = 1e-15
# absolute adjoint tolerance
Expand All @@ -88,13 +88,19 @@ braid_nrelax0 = 0
# Optimization
####################################
# Type of batch selection ("deterministic" or "stochastic")
# deterministic:
# fixes batch size => trains on this one
#
# stochastic: uses some (dead) pool
# batch elements are randomly chosen in each iteration during training
# smaller batch size makes sense
batch_type = deterministic
# Batch size
nbatch = 5000
# relaxation param for tikhonov term
gamma_tik = 1e-7
# relaxation param for time-derivative term
gamma_ddt = 1e-7
gamma_ddt = 1e-5
# relaxation param for tikhonov term of classification weights
gamma_class = 1e-7
# stepsize selection type ("fixed" or "backtrackingLS" or "oneoverk")
Expand All @@ -106,19 +112,19 @@ stepsize_type = backtrackingLS
# initial stepsize
stepsize = 1.0
# maximum number of optimization iterations
optim_maxiter = 10
optim_maxiter = 130
# absolute stopping criterion for the gradient norm
gtol = 1e-4
# maximum number of linesearch iterations
ls_maxiter = 20
ls_maxiter = 15
# factor for modifying the stepsize within a linesearch iteration
ls_factor = 0.5
# Hessian Approximation ("BFGS", "L-BFGS" or "Identity")
hessian_approx = L-BFGS
# number of stages for l-bfgs method
lbfgs_stages = 20
lbfgs_stages = 10
# level for validation computation:
# -1 = never validate
# 0 = validate only after optimization finishes.
# 1 = validate in each optimization iteration
validationlevel = 0
validationlevel = 1
Loading