Skip to content

Instantly share code, notes, and snippets.

@Seppo420
Created August 19, 2015 13:05
Show Gist options
  • Save Seppo420/836a160424be3c9c540f to your computer and use it in GitHub Desktop.
Save Seppo420/836a160424be3c9c540f to your computer and use it in GitHub Desktop.
dl4j issues
Exception in thread "main" java.lang.IllegalArgumentException: Shape must be <= buffer length
at org.nd4j.linalg.api.ndarray.BaseNDArray.<init>(BaseNDArray.java:133)
at org.nd4j.linalg.jblas.NDArray.<init>(NDArray.java:65)
at org.nd4j.linalg.jblas.JblasNDArrayFactory.create(JblasNDArrayFactory.java:229)
at org.nd4j.linalg.factory.Nd4j.create(Nd4j.java:2919)
at org.nd4j.linalg.api.ndarray.BaseNDArray.create(BaseNDArray.java:3305)
at org.nd4j.linalg.api.ndarray.BaseNDArray.reshape(BaseNDArray.java:3348)
at org.nd4j.linalg.api.ndarray.BaseNDArray.reshape(BaseNDArray.java:3372)
at org.nd4j.linalg.api.ndarray.BaseNDArray.reshape(BaseNDArray.java:3605)
at org.deeplearning4j.nn.conf.preprocessor.RnnToFeedForwardPreProcessor.preProcess(RnnToFeedForwardPreProcessor.java:42)
at org.deeplearning4j.nn.multilayer.MultiLayerNetwork.activationFromPrevLayer(MultiLayerNetwork.java:450)
at org.deeplearning4j.nn.multilayer.MultiLayerNetwork.feedForward(MultiLayerNetwork.java:513)
at org.deeplearning4j.nn.multilayer.MultiLayerNetwork.feedForward(MultiLayerNetwork.java:499)
at org.deeplearning4j.nn.multilayer.MultiLayerNetwork.output(MultiLayerNetwork.java:1250)
at org.deeplearning4j.nn.multilayer.MultiLayerNetwork.output(MultiLayerNetwork.java:1266)
at org.deeplearning4j.nn.multilayer.MultiLayerNetwork.predict(MultiLayerNetwork.java:1143)
at testicle.LSTMTest.main(LSTMTest.java:130)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
public static void main(String... args)throws Exception {
/*
final int numRows = 1;
final int numColumns = 1;
int outputNum = 1;
int numSamples = 10;
int batchSize = 10;
int iterations = 1;
int seed = 123;
int listenerFreq = iterations/5;
//log.info("Loading data...");
//MnistDataFetcher fetcher = new MnistDataFetcher(true);
log.info("Building model...");
NeuralNetConfiguration conf = new NeuralNetConfiguration.Builder()
.layer(new LSTM())
.nIn(numRows * numColumns)
.nOut(numRows * numColumns)
.activationFunction("sigmoid")
.optimizationAlgo(OptimizationAlgorithm.LBFGS)
.constrainGradientToUnitNorm(true)
.lossFunction(LossFunctions.LossFunction.RMSE_XENT)
.build();
Layer model = LayerFactories.getFactory(conf.getLayer()).create(conf);
model.setListeners(Arrays.asList((IterationListener) new ScoreIterationListener(listenerFreq)));
log.info("Training model...");
// for(int i=0 ; i < (numSamples/batchSize); i++) {
DataSet mnist = getDataSet();
model.fit(mnist.getFeatureMatrix());
//}
// Generative model - unsupervised and its time series based which requires different evaluation technique
*/
Nd4j.getRandom().setSeed(12345L);
int timeSeriesLength = 2;
int nIn = 1;
int layerSize = 2;
int nOut = 1;
int miniBatchSize = 11;
MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder()
.weightInit(WeightInit.DISTRIBUTION).dist(new NormalDistribution(0,0.1))
.regularization(false)
.updater(Updater.NONE)
.seed(12345L)
.list(2)
.layer(0, new GravesLSTM.Builder().nIn(nIn).nOut(layerSize).activation("tanh").build())
.layer(1, new OutputLayer.Builder(LossFunction.MCXENT).activation("softmax").nIn(layerSize).nOut(nOut).build())
.inputPreProcessor(1, new RnnToFeedForwardPreProcessor(timeSeriesLength))
.pretrain(false).backprop(true)
.build();
MultiLayerNetwork mln = new MultiLayerNetwork(conf);
mln.init();
//huutaa niin vitusti jtn helper palikkaa tahan
Random r = new Random(12345L);
INDArray input = Nd4j.zeros(miniBatchSize,nIn,timeSeriesLength);
for( int i=0; i<miniBatchSize; i++ ){
for( int j=0; j<nIn; j++ ){
for( int k=0; k<timeSeriesLength; k++ ){
input.putScalar(new int[]{i,j,k},r.nextDouble()-0.5);
}
}
}
INDArray labels = Nd4j.zeros(miniBatchSize*timeSeriesLength,nOut); //Would be this shape after reshaping 3d -> 2d for output layer
for( int i=0; i<labels.size(0); i++){
int idx = r.nextInt(nOut);
labels.putScalar(new int[]{i,idx}, 1.0f);
}
//DataSet ds = new DataSet(input,labels);
mln.fit(input,labels);
log.info("los tulos: {}",mln.predict(Nd4j.zeros(1,nIn)));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment