2016-11-11 163 views
0

我想打印用於分類的traindata/testdata的標籤。這裏是兩個輸入的定義(使用deep4j)。顯示數據標籤[deep4j]

InputSplit[] inputSplit = fileSplit.sample(pathFilter, splitTrainTest, 1 - splitTrainTest); 
    InputSplit trainData = inputSplit[0]; 
    InputSplit testData = inputSplit[1]; 

,然後可在DataSetIterator轉化這樣的:

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"); 
    } 
} 

的問題在於它只顯示每個標籤的一個示例,而應該有更多......並且當我不使用fileSplit.sample()分割我的數據集時,該函數顯示正確的e xamples。 有什麼建議嗎?

回答

0

如果你使用一個數據集可以使用dataset.getFeatureMatrix()和dataset.getLabels()

的的toString()如果您想打印只需將標籤數,您可以使用dataset.labelCounts( )我會更看看dl4j javadoc: http://deeplearning4j.org/doc

+0

我想檢索每個示例及其相應的標籤。所以我的問題是:數據集是否包含幾個例子? (對我來說,似乎並不是這樣,因爲.labelCounts()只發回一個值) – Arcyno

+0

是的,它是一個小批次。請閱讀nd4j的工作原理。 http://nd4j.org/tensor –