2016-11-11 141 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 –