我使用Deeplearning4j测试了异常检测,一切正常,但是,我无法在训练时保留VehicleID。在这种情况下,最好的方法是什么?
请看……
通常,您通过数据集中的索引跟踪训练示例。跟踪数据集所在的索引是否与训练一起位于数据集中。有很多方法可以做到这一点。
在dl4j中,我们通常保持数据原始并使用记录读取器+转换过程用于训练数据。如果您对原始数据使用记录阅读器(为数据集选择一个,可能是csv甚至是视频),并使用像这里的记录阅读器数据库: ```的java RecordReader recordReader = new CSVRecordReader(0,','); recordReader.initialize(new FileSplit(new ClassPathResource(“iris.txt”)。getFile())); int labelIndex = 4; int numClasses = 3; int batchSize = 150;
RecordReaderDataSetIterator iterator = new RecordReaderDataSetIterator(recordReader,batchSize,labelIndex,numClasses); iterator.setCollectMetaData(true); //Instruct the iterator to collect metadata, and store it in the DataSet objects DataSet allData = iterator.next(); DataSet trainingData = testAndTrain.getTrain(); DataSet testData = testAndTrain.getTest();
```
(这里完整代码): https://github.com/deeplearning4j/dl4j-examples/blob/master/dl4j-examples/src/main/java/org/deeplearning4j/examples/dataexamples/CSVExampleEvaluationMetaData.java
除此之外,您还可以使用TransformProcess:
//Let's define the schema of the data that we want to import //The order in which columns are defined here should match the //order in which they appear in the input data Schema inputDataSchema = new Schema.Builder() //We can define a single column .addColumnString("DateTimeString")
.... 。建立(); //在每一步,我们通过我们在其中给出的名称来标识列 输入数据模式,上面
TransformProcess tp = new TransformProcess.Builder(inputDataSchema) //your transforms go here .build();
完整示例如下:
https://github.com/deeplearning4j/dl4j-examples/blob/6967b2ec2d51b0d19b5d6437763a2936ca922a0a/datavec-examples/src/main/java/org/datavec/transform/basic/BasicDataVecExampleLocal.java
如果您使用这些东西,您可以自定义保持数据不变,但拥有完整的数据管道。有很多方法可以做到这一点,只要记住你从车辆ID开始,它不必消失。