4

私はこのチュートリアルに取り組んでいます:

https://github.com/Microsoft/CNTK/blob/master/Tutorials/CNTK_201B_CIFAR-10_ImageHandsOn.ipynb

テスト/トレーニング データ ファイルは、次のような画像ファイル名と正しいラベルを含む単純なタブ区切りのテキスト ファイルです。

...\data\CIFAR-10\test\00000.png    3
...\data\CIFAR-10\test\00001.png    8
...\data\CIFAR-10\test\00002.png    8

ミニバッチから元のラベルを抽出するにはどうすればよいですか?

私はこのコードで試しました:

reader_test = MinibatchSource(ImageDeserializer('test_map.txt', StreamDefs(
    features = StreamDef(field='image', transforms=transforms), # first column in map file is referred to as 'image'
    labels   = StreamDef(field='label', shape=num_classes)      # and second as 'label'
)))

test_minibatch = reader_test.next_minibatch(10)
labels_stream_info = reader_test['labels']
orig_label = test_minibatch[labels_stream_info].value
print(orig_label)

<cntk.cntk_py.Value; proxy of <Swig Object of type 'CNTK::ValuePtr *' at 0x0000000007A32C00> >

しかし、上で見たように、結果はラベル付きの配列ではありません。

ラベルに到達するための正しいコードは何ですか?

このコードは機能しますが、ImageDeserializer ではなく別のファイル形式を使用します。

ファイル形式:

|labels 0 0 1 0 0 0 |features 0
|labels 1 0 0 0 0 0 |features 457

作業コード:

mb_source = text_format_minibatch_source('test_map2.txt', [
    StreamConfiguration('features', 1),
    StreamConfiguration('labels', num_classes)])

test_minibatch = mb_source.next_minibatch(2)

labels_stream_info = mb_source['labels']
orig_label = test_minibatch[labels_stream_info].value
print(orig_label)

[[[ 0.  0.  1.  0.  0.  0.]]
 [[ 1.  0.  0.  0.  0.  0.]]]

ImageDeserializer を使用する場合、入力のラベルを取得するにはどうすればよいですか?

4

2 に答える 2

2

使用してみてください:

orig_label = test_minibatch[labels_stream_info].value
于 2017-01-05T10:04:05.503 に答える