You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@systemml.apache.org by du...@apache.org on 2016/08/04 20:58:10 UTC
incubator-systemml git commit: [SYSTEMML-803] Add dropout to LeNet
network, and fix bug in LeNet training script.
Repository: incubator-systemml
Updated Branches:
refs/heads/master 3e28592ef -> 588bafac3
[SYSTEMML-803] Add dropout to LeNet network, and fix bug in LeNet training script.
Project: http://git-wip-us.apache.org/repos/asf/incubator-systemml/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-systemml/commit/588bafac
Tree: http://git-wip-us.apache.org/repos/asf/incubator-systemml/tree/588bafac
Diff: http://git-wip-us.apache.org/repos/asf/incubator-systemml/diff/588bafac
Branch: refs/heads/master
Commit: 588bafac33c4b9d6e70d11acab486d0d38631d30
Parents: 3e28592
Author: Mike Dusenberry <mw...@us.ibm.com>
Authored: Thu Aug 4 13:57:09 2016 -0700
Committer: Mike Dusenberry <mw...@us.ibm.com>
Committed: Thu Aug 4 13:57:09 2016 -0700
----------------------------------------------------------------------
.../staging/SystemML-NN/examples/mnist_lenet-train.dml | 2 +-
scripts/staging/SystemML-NN/examples/mnist_lenet.dml | 11 +++++++----
2 files changed, 8 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/588bafac/scripts/staging/SystemML-NN/examples/mnist_lenet-train.dml
----------------------------------------------------------------------
diff --git a/scripts/staging/SystemML-NN/examples/mnist_lenet-train.dml b/scripts/staging/SystemML-NN/examples/mnist_lenet-train.dml
index ed2d12c..e3ad405 100644
--- a/scripts/staging/SystemML-NN/examples/mnist_lenet-train.dml
+++ b/scripts/staging/SystemML-NN/examples/mnist_lenet-train.dml
@@ -84,7 +84,7 @@ n = nrow(train)
n_test = nrow(test)
images = (images / 255.0) * 2 - 1
labels = table(seq(1, n), labels+1, n, 10)
-X_test = X_test / 255.0
+X_test = (X_test / 255.0) * 2 - 1
y_test = table(seq(1, n_test), y_test+1, n_test, 10)
# Split into training (55,000 examples) and validation (5,000 examples)
http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/588bafac/scripts/staging/SystemML-NN/examples/mnist_lenet.dml
----------------------------------------------------------------------
diff --git a/scripts/staging/SystemML-NN/examples/mnist_lenet.dml b/scripts/staging/SystemML-NN/examples/mnist_lenet.dml
index 3ae0d0f..22a793c 100644
--- a/scripts/staging/SystemML-NN/examples/mnist_lenet.dml
+++ b/scripts/staging/SystemML-NN/examples/mnist_lenet.dml
@@ -26,6 +26,7 @@
source("nn/layers/affine.dml") as affine
source("nn/layers/conv_builtin.dml") as conv
source("nn/layers/cross_entropy_loss.dml") as cross_entropy_loss
+source("nn/layers/dropout.dml") as dropout
source("nn/layers/l2_reg.dml") as l2_reg
source("nn/layers/max_pool_builtin.dml") as max_pool
source("nn/layers/relu.dml") as relu
@@ -120,11 +121,12 @@ train = function(matrix[double] X, matrix[double] y,
[outc2, Houtc2, Woutc2] = conv::forward(outp1, W2, b2, F1, Houtp1, Woutp1, Hf, Wf, stride, stride, pad, pad)
outr2 = relu::forward(outc2)
[outp2, Houtp2, Woutp2] = max_pool::forward(outr2, F2, Houtc2, Woutc2, Hf=2, Wf=2, strideh=2, stridew=2)
- ## layer 3: affine3 -> relu3
+ ## layer 3: affine3 -> relu3 -> dropout
outa3 = affine::forward(outp2, W3, b3)
outr3 = relu::forward(outa3)
+ [outd3, maskd3] = dropout::forward(outr3, 0.5, -1)
## layer 4: affine4 -> softmax
- outa4 = affine::forward(outr3, W4, b4)
+ outa4 = affine::forward(outd3, W4, b4)
probs = softmax::forward(outa4)
# Compute loss & accuracy for training & validation data every 100 iterations.
@@ -152,8 +154,9 @@ train = function(matrix[double] X, matrix[double] y,
dprobs = cross_entropy_loss::backward(probs, y_batch)
## layer 4: affine4 -> softmax
douta4 = softmax::backward(dprobs, outa4)
- [doutr3, dW4, db4] = affine::backward(douta4, outr3, W4, b4)
- ## layer 3: affine3 -> relu3
+ [doutd3, dW4, db4] = affine::backward(douta4, outr3, W4, b4)
+ ## layer 3: affine3 -> relu3 -> dropout
+ doutr3 = dropout::backward(doutd3, outr3, 0.5, maskd3)
douta3 = relu::backward(doutr3, outa3)
[doutp2, dW3, db3] = affine::backward(douta3, outp2, W3, b3)
## layer 2: conv2 -> relu2 -> pool2