2016-11-11 5 views
0

分類に使用するtraindata/testdataのラベルを印刷したいと思います。ここでは両方の入力の定義があります(deep4jを使用)。データのラベルを表示する[deep4j]

このようDataSetIteratorに変換され
InputSplit[] inputSplit = fileSplit.sample(pathFilter, splitTrainTest, 1 - splitTrainTest); 
    InputSplit trainData = inputSplit[0]; 
    InputSplit testData = inputSplit[1]; 

ImageRecordReader recordReader = new ImageRecordReader(height, width, channels, labelMaker); 
    recordReader.initialize(trainData, null); 
    trainIter = new RecordReaderDataSetIterator(recordReader, batchSize, 1, numLabels); 

そこで私は、この機能で各イテレータで見つかったラベルごとにどのように多くの例を印刷したい:

public void print(DataSetIterator iter){ 

    HashMap<String, Integer> hash = new HashMap<String, Integer>(); 

    while(iter.hasNext()){ 
     DataSet example = iter.next(); 
     for(int i = 0 ; i<numLabels ; i++){ 
      if(example.getLabels().getDouble(i)==1.){ 
       String label = example.getLabelName(i); 
       if(hash.containsKey(label)) 
        hash.put(label, hash.get(label)+1); 
       else 
        hash.put(label, 1); 
      } 
     } 
    } 

    for (String label: hash.keySet()){ 
     System.out.println(" label : " + label.toString() + ", " + hash.get(label) + " examples"); 
    } 
} 

問題は、ラベルごとに1つの例しか表示されないのに対して、はるかに多いはずです...そして、fileSplit.sample()を使用してデータセットを分割しないと、関数は正しい数のeを表示しますxamples。 提案がありますか?

答えて

0

あなたがデータセットを使用する場合は、あなただけのラベルカウントを印刷したい場合は、あなたは(dataset.labelCountsを使用することができ、dataset.getFeatureMatrix()とdataset.getLabels()

のtoString()を使用することができます)私はdl4j javadocをさらに詳しく見ていきます。 http://deeplearning4j.org/doc

+0

私はすべての単一の例とそれに対応するラベルを取りたいと思います。だから私の質問です:データセットはいくつかの例が含まれていますか? (.labelCounts()は1つの値だけを返すので、私の場合はそう思わない) – Arcyno

+0

はい、それはミニバッチです。 nd4jの仕組みをお読みください。 http://nd4j.org/tensor –

関連する問題