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 <[email protected]> Authored: Thu Aug 4 13:57:09 2016 -0700 Committer: Mike Dusenberry <[email protected]> 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
