Hello everyone.
I need some help to make a pipeline between TfidfRecordReader and RecordReaderDataSetIterator.
This is my code :
int batchSize = 100;
int seed = 123;
File rootTrainingTxtFolder = new File("./TRAINING/TXT");
String[] allowedFormats=new String[]{".txt"};
FileSplit fileSplit = new FileSplit(rootTrainingTxtFolder ,allowedFormats,new Random(seed));
Configuration config = new Configuration();
config.setBoolean(RecordReader.APPEND_LABEL, true);
config.setInt(TextVectorizer.MIN_WORD_FREQUENCY, 1);
TfidfRecordReader recordReader = new TfidfRecordReader();
recordReader.initialize(config, fileSplit);
int nbrLabel = recordReader.getLabels().size();
DataSetIterator trainIter = new RecordReaderDataSetIterator.Builder(recordReader, batchSize)
.classification(1, nbrLabel)
.build();
trainIter.next();
And i’ve got an exception :
Exception in thread "main" java.lang.IllegalStateException: Cannot put array: array should have leading dimension of 1 and equal rank to output array. Attempting to put array of shape [9418] into output array of shape [100]
at org.nd4j.common.base.Preconditions.throwStateEx(Preconditions.java:641)
at org.nd4j.common.base.Preconditions.checkState(Preconditions.java:340)
at org.deeplearning4j.datasets.datavec.RecordReaderMultiDataSetIterator.putExample(RecordReaderMultiDataSetIterator.java:544)
at org.deeplearning4j.datasets.datavec.RecordReaderMultiDataSetIterator.convertWritablesHelper(RecordReaderMultiDataSetIterator.java:516)
at org.deeplearning4j.datasets.datavec.RecordReaderMultiDataSetIterator.convertWritables(RecordReaderMultiDataSetIterator.java:454)
at org.deeplearning4j.datasets.datavec.RecordReaderMultiDataSetIterator.convertFeaturesOrLabels(RecordReaderMultiDataSetIterator.java:364)
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.RecordReaderDataSetIterator.next(RecordReaderDataSetIterator.java:378)
at org.deeplearning4j.datasets.datavec.RecordReaderDataSetIterator.next(RecordReaderDataSetIterator.java:453)
at org.deeplearning4j.datasets.datavec.RecordReaderDataSetIterator.next(RecordReaderDataSetIterator.java:85)
What is wrong ? Need to use a WritableConverter ?