API Python CNTK: Как получить прогнозы от обученной модели?
У меня есть обученная модель, которую я загружаю, используя 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'
в моей модели, и я не вижу причин, чтобы получить эту ошибку.
PS: мои входы - разреженные входы (однокоренные)
1 ответ
У вас есть несколько вариантов:
Передайте набор данных в виде массива numpy (экземпляр в учебнике CNTK 202), в который одноразовые данные передаются в виде массива 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)