1

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)
Nathan Kronenfeld
  • 473
  • 1
  • 5
  • 14
  • Hi, could you give some sort of a stack trace we can see? Here's 1 example of rnns in dl4j: https://github.com/eclipse/deeplearning4j-examples/blob/9e971fdb782249873786a960f248247dd28650fa/dl4j-examples/src/main/java/org/deeplearning4j/examples/advanced/modelling/seq2seq/AdditionModelWithSeq2Seq.java Here's the examples for recurrent models: https://deeplearning4j.konduit.ai/models/recurrent – Adam Gibson Aug 05 '20 at 23:50

0 Answers0