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