在异常检测中存储车辆ID

时间:2018-07-09 13:53:10

标签: deeplearning4j

我使用Deeplearning4j测试了异常检测,但一切正常,除了,我在训练时无法保留VehicleID。在这种情况下最好的方法是什么?

请看下面的代码片段,SparkTransformExecutor返回一个RDD,而当我从RDD索引中收集列表时,InMemorySequence正在获取一个列表。

  val records:JavaRDD[util.List[util.List[Writable]]] = SparkTransformExecutor
  .executeToSequence(.....)
   val split = records.randomSplit(Array[Double](0.7,0.3))
  val testSequences = split(1)

 //in memory  sequence reader
  val testRR = new InMemorySequenceRecordReader(testSequences.collect().toList)

   val testIter = new RecordReaderMultiDataSetIterator.Builder(batchSize)
           .addSequenceReader("records", trainRR)
           .addInput("records")
          .build()

1 个答案:

答案 0 :(得分:1)

通常,您通过数据集中的索引跟踪训练示例。跟踪训练中数据集中哪个数据集是车辆。有很多方法可以做到这一点。

在dl4j中,我们通常保留原始数据,并使用记录读取器+转换过程来训练数据。如果您在原始数据上使用记录读取器(为数据集选择一个,则可能是csv甚至是视频),并使用如下所示的recordreader数据集迭代器: Java  RecordReader recordReader =新的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开始,它就不必消失。