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。 提案がありますか?
私はすべての単一の例とそれに対応するラベルを取りたいと思います。だから私の質問です:データセットはいくつかの例が含まれていますか? (.labelCounts()は1つの値だけを返すので、私の場合はそう思わない) – Arcyno
はい、それはミニバッチです。 nd4jの仕組みをお読みください。 http://nd4j.org/tensor –