Python CNTK, почему мини-пакетные данные не группируются?

Я тренирую модель, используя модель понимания языка в примерах CNTK. Это проблема маркировки последовательности. Для каждого слова в каждом запросе вы хотите предсказать правильную метку (из 16 возможных меток).

Вот что я сделал

        minibatch_size = 5
    data = reader.next_minibatch(minibatch_size, input_map={  # fetch minibatch
        x: reader.streams.query,
        y: reader.streams.slot_labels
    })
    if not data:                                 # until we hit the end
        break

    evaluator = C.eval.Evaluator(loss, progress_printer)
    evaluator.test_minibatch(data)
    res = model.eval(data)
    print("data[y].shape=", data[y].shape)
    print("")
    print("len(res)=", len(res), " shape=", res[0].shape)

Форма data[y].shape: 1 * 3 * 16 или 2 * 4 * 16 и т. д.

Я понял, что 3/4 означает количество слов в моем запросе. 16 — размер однократного вектора. Таким образом, 1/ должен быть размером партии. Однако я установил размер пакета равным 5, почему он не равен 5?

Еще одна запутанная вещь заключается в том, что если я сделаю «t += data[y].num_samples», то вначале t может быть ~60. Что означают num_samples и num_sequences в minibatchData?

Более того, если это 2 * 4 * 16, означает ли это, что все два запроса имеют длину 4? Означает ли это, что программа будет перемешивать мои тестовые данные, чтобы комбинировать запросы одинаковой длины? Или вообще, если я установлю randomized=False, должен ли порядок быть таким же, как мои тестовые данные?


person Demi Guo    schedule 14.06.2017    source источник
comment
Продолжение: На самом деле. это не всегда 1 * 3 * 16. Иногда это 2 * 3 * 16 и т.д. Но почему это не 5?   -  person Demi Guo    schedule 15.06.2017


Ответы (1)


Потому что CNTK считает каждую точку данных последовательности «выборкой», а размер мини-пакета указывается в выборках, а не в количестве последовательностей.

См. https://docs.microsoft.com/en-us/cognitive-toolkit/interpreting-epoch_size-and-minibatch_size_in_samples-and-minibatchsource.next_minibatch-in-cntk

person taavi    schedule 13.04.2018