I'm using deeplearning4j and I keep getting this error. I'm very very new to dl4j and AI in general. I'm trying to predict the next value given the 10 previous values. I am using an LSTM. I'm pretty sure I might have to use masking but I'm clueless and the dl4j community is kinda small. This is very tedious. Here's my code: // I previously normalized my data, as it ranges from about 3500-6500
DataSetIterator trainData = new SequenceRecordReaderDataSetIterator(trainFeatures, trainLabels, miniBatchSize,
1, true, SequenceRecordReaderDataSetIterator.AlignmentMode.EQUAL_LENGTH);
DataSetIterator testData = new SequenceRecordReaderDataSetIterator(testFeatures, testLabels, miniBatchSize,
1, true, SequenceRecordReaderDataSetIterator.AlignmentMode.EQUAL_LENGTH);
MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder()
.seed(123)
.weightInit(WeightInit.XAVIER)
.updater(new Adam())
.list()
.layer(new LSTM.Builder().activation(Activation.TANH).nIn(1).nOut(10).build())
.layer(new OutputLayer.Builder(LossFunctions.LossFunction.MSE)
.activation(Activation.RELU).nIn(10).nOut(1).build())
.build();
MultiLayerNetwork net = new MultiLayerNetwork(conf);
net.init();
This is the Error:
Caused by: java.lang.IllegalArgumentException: Labels and preOutput must have equal shapes: got shapes [5, 1, 1] vs [50, 1]
My data consists of single column time-series CSV files, each a sequence of 10. Labels are single values representing the very next value.
Heres my trainFeatures and trainLabels declaration
SequenceRecordReader trainFeatures = new CSVSequenceRecordReader(numLinesToSkip, delimiter);
trainFeatures.initialize(new NumberedFileInputSplit(testAndTrainFeatures + "%d.csv",0,800));
SequenceRecordReader trainLabels = new CSVSequenceRecordReader(numLinesToSkip, delimiter);
trainLabels.initialize(new NumberedFileInputSplit(testAndTrainLabels + "%d.csv", 0, 800));