2017-03-07 56 views
1

我有一個訓練有素的模型,我使用CNTK.load_model()函數加載。我正在查看CNTK git repo上的MNIST Tutorial作爲模型評估代碼的參考。我創建了一個數據讀取器(這是一個MinibatchSource對象),並試圖運行model.eval(mb)其中mb = minibatch_source.next_minibatch(...)(類似this answerCNTK python API:如何從訓練過的模型中獲取預測結果?

但是,我發現了以下錯誤消息

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教程),其中onehot數據作爲numpy數組傳入。

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

  • 閱讀minibatch數據並將其傳遞給eval函數

    eval_input_map = {輸入:reader_eval。 streams.features}
    eval_data = reader_eval.next_minibatch(eval_minibatch_size, input_map = eval_input_map) MYDATA = eval_data [輸入]。價值 預測= model.eval(MYDATA)

相關問題