Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
1551d04
Add SameDiff.setOutputs overloads for SDVariables
Jun 22, 2020
11c49d4
Add toSameDiff() for MultiLayerNetwork. Doesn't support masks.
Jun 22, 2020
fd484d8
Add (not working yet) partial MNIST test.
Jun 22, 2020
a9002ba
Pass iUpdater and InputType to configuration from builder
Jun 23, 2020
d383d17
InputPreProcessor default define function, make all InputPreProcessor…
Jun 23, 2020
44f5ad3
Add BaseLossFunction with default define function, make others extend it
Jun 23, 2020
940d8aa
Add define for activation functions, helper method for it in BaseLayer
Jun 23, 2020
82da5df
Update toSameDiff to handle activations, preprocessors, and improvements
Jun 23, 2020
8c50f33
MNIST test implementation
Jun 23, 2020
e64f895
A few fixes, most activation and loss implementations
Jun 24, 2020
2623c60
Fix loss averaging
Jun 24, 2020
f91c796
Tests and fixes
Jun 24, 2020
79e437f
Test fixes, mostly specifying output type.
Jun 24, 2020
85f0377
Test fixes, mostly specifying output type.
Jun 24, 2020
ca6245d
add convolution mode
Jun 24, 2020
42e428e
support more output layers
Jun 24, 2020
1f5dde1
implementation for no param layers
Jun 25, 2020
a92f67d
Lots of fixes and layer implementations
Jun 27, 2020
0b5f5fe
quick fix & comment
Jun 27, 2020
0a31eb3
Better tests
Jun 29, 2020
0037514
partial fixes
Jun 29, 2020
17c16c2
reduce overloads
Jun 30, 2020
c5b92a3
toSameDiff updates & fixes, ComputationGraph support
Jun 30, 2020
85f7e03
vertices
Jun 30, 2020
c365af2
new loss definitions
Jun 30, 2020
94f6728
Fixes, new SameDiff loss layer setup
Jun 30, 2020
fcab262
Test update
Jun 30, 2020
ae18ea2
cleanup
Jun 30, 2020
c1ff796
cleanup
Jun 30, 2020
f86aeed
small optimization
Jun 30, 2020
4074ddf
Merge remote-tracking branch 'origin/rn_dl4j_to_samediff' into rn_dl4…
Jun 30, 2020
bac8d48
support more data formats
Jun 30, 2020
9c36d69
fix imports
Jul 1, 2020
5265955
catch & pass regularization and updater exceptions
Jul 1, 2020
b99f11b
Update losses & loss layers
Jul 1, 2020
4276e45
Do weight transforms on the INDArray level, not SameDiff
Jul 1, 2020
21fb556
ComputationGraph toSameDiff tests & fixes
Jul 2, 2020
21899fb
fixes
Jul 2, 2020
961c938
rename fix
Jul 2, 2020
8a684e4
cleanup
Jul 2, 2020
58d1dae
change weight transform method to alter map
Jul 2, 2020
302a313
test fixes
Jul 3, 2020
894fb2f
Test fixes, utils class, overloads ot toSameDiff
Jul 3, 2020
f1e642f
Most of updater state support
Jul 3, 2020
06afec4
Most of updater state support
Jul 3, 2020
b24c5f2
Merge remote-tracking branch 'origin/rn_dl4j_to_samediff' into rn_dl4…
Jul 3, 2020
8ae6711
bug fixes
Jul 4, 2020
fea9fd6
bug fixes
Jul 4, 2020
da1f933
Test fixes
Jul 6, 2020
0b79ba3
More tests, start of training tests
Jul 6, 2020
3a8f348
Fix tests not reporting loss failures
Jul 6, 2020
594f4e7
More fixes
Jul 7, 2020
582da0f
More fixes
Jul 7, 2020
7b493fa
Simple test
Jul 7, 2020
551e3a1
Use param map instead of view
Jul 7, 2020
75c7168
Partial fix?
Jul 7, 2020
fb18d64
reshape order too
Jul 7, 2020
2eb57fa
fixes
Jul 7, 2020
80d15ca
add dup
Jul 7, 2020
b75d9bf
correct epoch count
Jul 7, 2020
78e14f9
try fix
Jul 7, 2020
d9dda1b
More tests
Jul 7, 2020
68f9ca7
loss function div fixes
Jul 7, 2020
e6966b1
fix
Jul 7, 2020
ec2aabe
fix
Jul 7, 2020
08fda3a
test w/ losses
Jul 7, 2020
1cc3111
disable test timeout when debugging
Jul 7, 2020
6f7f9c2
Transform updater state the same way parameters are transformed
Jul 8, 2020
13fd860
new tests
Jul 8, 2020
0673ad9
more testing
Jul 9, 2020
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
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,9 @@
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.rules.DisableOnDebug;
import org.junit.rules.TestName;
import org.junit.rules.TestRule;
import org.junit.rules.Timeout;
import org.nd4j.common.base.Preconditions;
import org.nd4j.common.config.ND4JSystemProperties;
Expand All @@ -48,7 +50,7 @@ public abstract class BaseDL4JTest {
@Rule
public TestName name = new TestName();
@Rule
public Timeout timeout = Timeout.millis(getTimeoutMilliseconds());
public TestRule timeout = new DisableOnDebug(Timeout.millis(getTimeoutMilliseconds()));

protected long startTime;
protected int threadCountBefore;
Expand Down
41 changes: 41 additions & 0 deletions deeplearning4j/deeplearning4j-core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
<artifactId>deeplearning4j-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>

<dependencyManagement>
<dependencies>
<dependency>
Expand Down Expand Up @@ -166,6 +167,46 @@
</dependency>
</dependencies>

<build>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-http</artifactId>
<version>2.9</version>
</extension>
<extension>
<groupId>org.kuali.maven.wagons</groupId>
<artifactId>maven-s3-wagon</artifactId>
<version>1.2.1</version>
</extension>
</extensions>

<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<inherited>true</inherited>
<configuration>
<useSystemClassLoader>true</useSystemClassLoader>
<useManifestOnlyJar>false</useManifestOnlyJar>
<argLine>-Ddtype=float -Dfile.encoding=UTF-8 -Xmx8g</argLine>
<includes>
<!-- Default setting only runs tests that start/end with "Test" -->
<include>*.java</include>
<include>**/*.java</include>
</includes>
<properties>
<property>
<name>listener</name>
<value>org.deeplearning4j.samediff.ToSameDiffTests</value>
</property>
</properties>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>

<profiles>
<profile>
<id>test-nd4j-native</id>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,22 +16,53 @@

package org.deeplearning4j;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;

import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.Set;
import lombok.NonNull;
import org.apache.commons.compress.utils.IOUtils;
import org.deeplearning4j.nn.api.Layer;
import org.deeplearning4j.nn.conf.ComputationGraphConfiguration;
import org.deeplearning4j.nn.conf.MultiLayerConfiguration;
import org.deeplearning4j.nn.conf.RNNFormat;
import org.deeplearning4j.nn.conf.inputs.InputType;
import org.deeplearning4j.nn.conf.layers.BaseLayer;
import org.deeplearning4j.nn.conf.layers.samediff.AbstractSameDiffLayer;
import org.deeplearning4j.nn.graph.ComputationGraph;
import org.deeplearning4j.nn.graph.vertex.GraphVertex;
import org.deeplearning4j.nn.layers.BaseOutputLayer;
import org.deeplearning4j.nn.layers.LossLayer;
import org.deeplearning4j.nn.layers.convolution.ConvolutionLayer;
import org.deeplearning4j.nn.layers.convolution.subsampling.SubsamplingLayer;
import org.deeplearning4j.nn.layers.normalization.BatchNormalization;
import org.deeplearning4j.nn.layers.normalization.LocalResponseNormalization;
import org.deeplearning4j.nn.layers.recurrent.LSTM;
import org.deeplearning4j.nn.multilayer.MultiLayerNetwork;
import org.deeplearning4j.util.ModelSerializer;
import org.nd4j.autodiff.samediff.SDVariable;
import org.nd4j.autodiff.samediff.SameDiff;
import org.nd4j.common.base.Preconditions;
import org.nd4j.common.primitives.Pair;
import org.nd4j.linalg.api.buffer.DataType;
import org.nd4j.linalg.api.ndarray.INDArray;
import org.nd4j.linalg.api.ops.random.impl.BernoulliDistribution;
Expand All @@ -40,14 +71,7 @@
import org.nd4j.linalg.learning.regularization.L2Regularization;
import org.nd4j.linalg.learning.regularization.Regularization;
import org.nd4j.linalg.learning.regularization.WeightDecay;

import java.io.*;
import java.lang.reflect.Field;
import java.util.List;
import java.util.Random;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import org.nd4j.linalg.lossfunctions.ILossFunction;

public class TestUtils {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@
import org.deeplearning4j.nn.graph.ComputationGraph;
import org.deeplearning4j.nn.multilayer.MultiLayerNetwork;
import org.deeplearning4j.nn.weights.WeightInit;
import org.deeplearning4j.samediff.TestToSameDiff;
import org.deeplearning4j.samediff.ToSameDiffTests;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
Expand Down Expand Up @@ -106,6 +108,7 @@ public void testSelfAttentionLayer() {
boolean gradOK = GradientCheckUtil.checkGradients(new GradientCheckUtil.MLNConfig().net(net).input(in)
.labels(labels).inputMask(inMask).subset(true).maxPerParam(100));
assertTrue(name, gradOK);
ToSameDiffTests.testToSameDiff(net, in, labels);
}
}
}
Expand Down Expand Up @@ -167,6 +170,7 @@ public void testLearnedSelfAttentionLayer() {
boolean gradOK = GradientCheckUtil.checkGradients(new GradientCheckUtil.MLNConfig().net(net).input(in)
.labels(labels).inputMask(inMask).subset(true).maxPerParam(100));
assertTrue(name, gradOK);
ToSameDiffTests.testToSameDiff(net, in, labels);
}
}
}
Expand Down Expand Up @@ -322,6 +326,8 @@ public void testRecurrentAttentionLayer() {
boolean gradOK = GradientCheckUtil.checkGradients(new GradientCheckUtil.MLNConfig().net(net).input(in)
.labels(labels).inputMask(inMask).subset(true).maxPerParam(100));
assertTrue(name, gradOK);

ToSameDiffTests.testToSameDiff(net, in, labels);
}
}
}
Expand Down Expand Up @@ -385,6 +391,7 @@ public void testAttentionVertex() {
boolean gradOK = GradientCheckUtil.checkGradients(new GradientCheckUtil.GraphConfig().net(net).inputs(new INDArray[]{in})
.labels(new INDArray[]{labels}).inputMask(inMask != null ? new INDArray[]{inMask} : null).subset(true).maxPerParam(100));
assertTrue(name, gradOK);
ToSameDiffTests.testToSameDiff(net, in, labels);
}
}
}
Expand Down Expand Up @@ -447,6 +454,7 @@ public void testAttentionVertexSameInput() {
boolean gradOK = GradientCheckUtil.checkGradients(new GradientCheckUtil.GraphConfig().net(net).inputs(new INDArray[]{in})
.labels(new INDArray[]{labels}).inputMask(inMask != null ? new INDArray[]{inMask} : null));
assertTrue(name, gradOK);
ToSameDiffTests.testToSameDiff(net, in, labels);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,20 +30,18 @@
import org.deeplearning4j.nn.graph.ComputationGraph;
import org.deeplearning4j.nn.multilayer.MultiLayerNetwork;
import org.deeplearning4j.nn.weights.WeightInit;
import org.deeplearning4j.samediff.ToSameDiffTests;
import org.junit.Test;
import org.nd4j.linalg.activations.Activation;
import org.nd4j.linalg.api.buffer.DataType;
import org.nd4j.linalg.api.ndarray.INDArray;
import org.nd4j.linalg.api.ops.executioner.OpExecutioner;
import org.nd4j.linalg.dataset.DataSet;
import org.nd4j.linalg.dataset.api.iterator.DataSetIterator;
import org.nd4j.linalg.dataset.api.preprocessor.DataNormalization;
import org.nd4j.linalg.dataset.api.preprocessor.NormalizerMinMaxScaler;
import org.nd4j.linalg.factory.Nd4j;
import org.nd4j.linalg.learning.config.NoOp;
import org.nd4j.linalg.lossfunctions.LossFunctions;
import org.nd4j.linalg.profiler.OpProfiler;
import org.nd4j.linalg.profiler.ProfilerConfig;

import java.util.Arrays;
import java.util.HashSet;
Expand Down Expand Up @@ -104,6 +102,7 @@ public void testGradient2dSimple() {
.labels(labels).excludeParams(excludeParams));

assertTrue(gradOK);
ToSameDiffTests.testToSameDiff(mln, input, labels);
TestUtils.testModelSerialization(mln);
}
}
Expand Down Expand Up @@ -149,6 +148,7 @@ public void testGradientCnnSimple() {
.labels(labels).excludeParams(excludeParams));

assertTrue(gradOK);
ToSameDiffTests.testToSameDiff(mln, input, labels);
TestUtils.testModelSerialization(mln);
}
}
Expand Down Expand Up @@ -251,6 +251,7 @@ public void testGradientBNWithCNNandSubsampling() {
.labels(labels).excludeParams(excludeParams).subset(true).maxPerParam(25)); //Most params are in output layer, only these should be skipped with this threshold

assertTrue(gradOK);
ToSameDiffTests.testToSameDiff(mln, input, labels);
TestUtils.testModelSerialization(mln);
}
}
Expand Down Expand Up @@ -355,6 +356,7 @@ public void testGradientDense() {
.labels(labels).excludeParams(excludeParams));

assertTrue(gradOK);
ToSameDiffTests.testToSameDiff(mln, input, labels);
TestUtils.testModelSerialization(mln);
}
}
Expand Down Expand Up @@ -399,6 +401,7 @@ public void testGradient2dFixedGammaBeta() {
.labels(labels).excludeParams(excludeParams));

assertTrue(gradOK);
ToSameDiffTests.testToSameDiff(mln, input, labels);
TestUtils.testModelSerialization(mln);
}
}
Expand Down Expand Up @@ -444,6 +447,7 @@ public void testGradientCnnFixedGammaBeta() {
.labels(labels).excludeParams(excludeParams));

assertTrue(gradOK);
ToSameDiffTests.testToSameDiff(mln, input, labels);
TestUtils.testModelSerialization(mln);
}
}
Expand Down Expand Up @@ -489,6 +493,7 @@ public void testBatchNormCompGraphSimple() {

assertTrue(gradOK);
TestUtils.testModelSerialization(net);
ToSameDiffTests.testToSameDiff(net, input, labels);
}
}

Expand Down Expand Up @@ -587,6 +592,7 @@ public void testGradientBNWithCNNandSubsamplingCompGraph() {

assertTrue(gradOK);
TestUtils.testModelSerialization(net);
ToSameDiffTests.testToSameDiff(net, input, labels);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@
import org.deeplearning4j.nn.conf.layers.*;
import org.deeplearning4j.nn.conf.layers.convolutional.Cropping1D;
import org.deeplearning4j.nn.multilayer.MultiLayerNetwork;
import org.deeplearning4j.samediff.ToSameDiffTests;
import org.deeplearning4j.util.Convolution1DUtils;
import org.deeplearning4j.util.ConvolutionUtils;
import org.junit.Test;
import org.nd4j.linalg.activations.Activation;
import org.nd4j.linalg.api.buffer.DataType;
Expand Down Expand Up @@ -122,6 +122,7 @@ public void testCnn1DWithLocallyConnected1D() {

assertTrue(msg, gradOK);

ToSameDiffTests.testToSameDiff(net, input, labels);
TestUtils.testModelSerialization(net);
}

Expand Down Expand Up @@ -202,6 +203,7 @@ public void testCnn1DWithCropping1D() {

assertTrue(msg, gradOK);

ToSameDiffTests.testToSameDiff(net, input, labels);
TestUtils.testModelSerialization(net);
}
}
Expand Down Expand Up @@ -285,6 +287,7 @@ public void testCnn1DWithZeroPadding1D() {
DEFAULT_MIN_ABS_ERROR, PRINT_RESULTS, RETURN_ON_FIRST_FAILURE, input, labels);

assertTrue(msg, gradOK);
ToSameDiffTests.testToSameDiff(net, input, labels);
TestUtils.testModelSerialization(net);
}
}
Expand Down Expand Up @@ -362,6 +365,7 @@ public void testCnn1DWithSubsampling1D() {
DEFAULT_MIN_ABS_ERROR, PRINT_RESULTS, RETURN_ON_FIRST_FAILURE, input, labels);

assertTrue(msg, gradOK);
ToSameDiffTests.testToSameDiff(net, input, labels);
TestUtils.testModelSerialization(net);
}
}
Expand Down Expand Up @@ -423,6 +427,7 @@ public void testCnn1dWithMasking(){
.labels(label).inputMask(fm));

assertTrue(s, gradOK);
ToSameDiffTests.testToSameDiff(net, f, label);
TestUtils.testModelSerialization(net);

//TODO also check that masked step values don't impact forward pass, score or gradients
Expand Down Expand Up @@ -518,6 +523,7 @@ public void testCnn1Causal() {
.labels(label).inputMask(fm));

assertTrue(s, gradOK);
ToSameDiffTests.testToSameDiff(net, f, label);
TestUtils.testModelSerialization(net);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@
import org.deeplearning4j.nn.conf.preprocessor.Cnn3DToFeedForwardPreProcessor;
import org.deeplearning4j.nn.multilayer.MultiLayerNetwork;
import org.deeplearning4j.nn.weights.WeightInit;
import org.deeplearning4j.samediff.ToSameDiffTests;
import org.junit.Test;
import org.nd4j.linalg.activations.Activation;
import org.nd4j.linalg.api.buffer.DataBuffer;
import org.nd4j.linalg.api.buffer.DataType;
import org.nd4j.linalg.api.ndarray.INDArray;
import org.nd4j.linalg.factory.Nd4j;
Expand Down Expand Up @@ -159,6 +159,7 @@ public void testCnn3DPlain() {

assertTrue(msg, gradOK);

ToSameDiffTests.testToSameDiff(net, input, labels);
TestUtils.testModelSerialization(net);
}
}
Expand Down Expand Up @@ -262,6 +263,7 @@ public void testCnn3DZeroPadding() {

assertTrue(msg, gradOK);

ToSameDiffTests.testToSameDiff(net, input, labels);
TestUtils.testModelSerialization(net);
}

Expand Down Expand Up @@ -352,6 +354,7 @@ public void testCnn3DPooling() {

assertTrue(msg, gradOK);

ToSameDiffTests.testToSameDiff(net, input, labels);
TestUtils.testModelSerialization(net);
}
}
Expand Down Expand Up @@ -442,6 +445,7 @@ public void testCnn3DUpsampling() {

assertTrue(msg, gradOK);

ToSameDiffTests.testToSameDiff(net, input, labels);
TestUtils.testModelSerialization(net);
}
}
Expand Down Expand Up @@ -541,6 +545,7 @@ public void testCnn3DCropping() {

assertTrue(msg, gradOK);

ToSameDiffTests.testToSameDiff(net, input, labels);
TestUtils.testModelSerialization(net);
}

Expand Down Expand Up @@ -632,6 +637,7 @@ public void testDeconv3d() {

assertTrue(msg, gradOK);

ToSameDiffTests.testToSameDiff(net, input, labels);
TestUtils.testModelSerialization(net);
}
}
Expand Down
Loading