I'm trying to create an LSTM network in DeepLearning4J to classify random-length strings of N characters.
I believe I have the network set up correctly, but I can't find documentation describing how the SequenceRecordReader input should be formed.
I figured out it was column-major format - so I have one feature per character, and my first dimension is the N features. I tried the second dimension being the sequences, the third, the characters in the sequence - so the third dimension wouldn't be even in length between entries in the second. Entries are simple DoubleWritables, valued 0 or 1.
However, that gives me an out-of-bounds exception as it's iterating through the data.
Does anyone know what my dimensions should be here? More helpfully, does anyone know where there is documentation on the input format/dimension descriptions for various DL4J algorthims?
Mr. Gibson below asks for a stack trace:
Exception in thread "AMDSI prefetch thread" java.lang.RuntimeException: java.lang.IndexOutOfBoundsException: 12000
at org.nd4j.linalg.dataset.AsyncMultiDataSetIterator$AsyncPrefetchThread.run(AsyncMultiDataSetIterator.java:389)
Caused by: java.lang.IndexOutOfBoundsException: 12000
at org.bytedeco.javacpp.indexer.Indexer.checkIndex(Indexer.java:94)
at org.bytedeco.javacpp.indexer.FloatRawIndexer.put(FloatRawIndexer.java:95)
at org.nd4j.linalg.api.buffer.BaseDataBuffer.put(BaseDataBuffer.java:1130)
at org.nd4j.linalg.api.ndarray.BaseNDArray.putScalar(BaseNDArray.java:1449)
at org.deeplearning4j.datasets.datavec.RecordReaderMultiDataSetIterator.convertWritablesSequence(RecordReaderMultiDataSetIterator.java:676)
at org.deeplearning4j.datasets.datavec.RecordReaderMultiDataSetIterator.convertFeaturesOrLabels(RecordReaderMultiDataSetIterator.java:369)
at org.deeplearning4j.datasets.datavec.RecordReaderMultiDataSetIterator.nextMultiDataSet(RecordReaderMultiDataSetIterator.java:327)
at org.deeplearning4j.datasets.datavec.RecordReaderMultiDataSetIterator.next(RecordReaderMultiDataSetIterator.java:213)
at org.deeplearning4j.datasets.datavec.SequenceRecordReaderDataSetIterator.next(SequenceRecordReaderDataSetIterator.java:365)
at org.deeplearning4j.datasets.datavec.SequenceRecordReaderDataSetIterator.next(SequenceRecordReaderDataSetIterator.java:344)
at org.deeplearning4j.datasets.datavec.SequenceRecordReaderDataSetIterator.next(SequenceRecordReaderDataSetIterator.java:48)
at org.nd4j.linalg.dataset.adapter.MultiDataSetIteratorAdapter.next(MultiDataSetIteratorAdapter.java:77)
at org.nd4j.linalg.dataset.adapter.MultiDataSetIteratorAdapter.next(MultiDataSetIteratorAdapter.java:28)
at org.nd4j.linalg.dataset.AsyncMultiDataSetIterator$AsyncPrefetchThread.run(AsyncMultiDataSetIterator.java:361)