CNTK python API: как получить прогнозы от обученной модели?

У меня есть обученная модель, которую я загружаю с помощью функции CNTK.load_model(). Я просматривал учебник по MNIST в репозитории git CNTK. в качестве ссылки для кода оценки модели. Я создал средство чтения данных (это объект MinibatchSource) и пытаюсь запустить model.eval(mb), где mb = minibatch_source.next_minibatch(...) (аналогично этому ответу)

Но я получаю следующее сообщение об ошибке

Traceback (most recent call last):
    File "LID_test.py", line 162, in <module>
        test_and_evaluate()
    File "LID_test.py", line 159, in test_and_evaluate
        predictions = model.eval(mb)
    File "/home/t-asbahe/anaconda3/envs/cntk-py35/lib/python3.5/site-packages/cntk/ops/functions.py", line 228, in eval
        _, output_map = self.forward(arguments, self.outputs, device=device, as_numpy=as_numpy)
    File "/home/t-asbahe/anaconda3/envs/cntk-py35/lib/python3.5/site-packages/cntk/utils/swig_helper.py", line 62, in wrapper
        result = f(*args, **kwds)
    File "/home/t-asbahe/anaconda3/envs/cntk-py35/lib/python3.5/site-packages/cntk/ops/functions.py", line 354, in forward
        None, device)
    File "/home/t-asbahe/anaconda3/envs/cntk-py35/lib/python3.5/site-packages/cntk/utils/__init__.py", line 393, in sanitize_var_map
        if len(arguments) < len(op_arguments):
TypeError: object of type 'Variable' has no len()

У меня нет input_variable с именем 'Variable' в моей модели, и я не вижу причин для получения этой ошибки.

P.S.: Мои входные данные являются разреженными входными данными (горячими)


person Ashutosh Baheti    schedule 07.03.2017    source источник


Ответы (1)


У вас есть несколько вариантов:

  • Передайте набор данных в виде массива numpy (экземпляр в учебнике CNTK 202), где данные onehot передаются в виде массива numpy.

    pred = model.eval({model.arguments[0]:[onehot]})

  • Прочитайте данные мини-пакета и передайте их функции eval.

    eval_input_map = { input : reader_eval.streams.features }
    eval_data = reader_eval.next_minibatch(eval_minibatch_size, input_map = eval_input_map) mydata = eval_data[input].value, предсказанный = model.eval(mydata)

person Sayan Pathak    schedule 08.03.2017