Я работаю над этим учебником:
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?