2017-06-12 64 views
1

隨着CNTK我已經建立網絡與2輸入神經元1輸出神經元。 在訓練文件中的一行看起來像CNTK&python:如何將輸入數據傳遞給eval func?

|features 1.567518 2.609619 |labels 1.000000 

然後,網絡與大腦腳本訓練。現在我想使用網絡來預測值。例如:輸入數據是[1.82,3.57]。網絡的輸出是什麼?

我試圖用Python下面的代碼,但在這裏我新。代碼不起作用。所以我的問題是:如何將輸入數據[1.82,3.57]傳遞給eval函數?

在stackoverflow上有一些提示,herehere,但這對我來說太抽象了。

謝謝。

import cntk as ct 
import numpy as np 

z = ct.load_model("LR_reg.dnn", ct.device.cpu()) 

input_data= np.array([1.82, 3.57], dtype=np.float32) 

pred = z.eval({ z.arguments[0] : input_data }) 

print(pred) 

回答

1

這是最防守的做法。如果您在使用V2構造指定網絡時忽略了這些內容,則可以原諒CNTK。不確定使用V1代碼創建的網絡。

基本上你需要爲每個軸的一對括號的。 Brainscript中存在哪些軸?有一個批處理軸,一個序列軸,然後是網絡的靜態軸。你有一點維的數據,以便指下列應該工作: input_data= np.array([[[1.82, 3.57]]], dtype=np.float32) 這指定了一個批次一個序列,長度爲一的,含有兩個元件中的一個一維矢量。您也可以嘗試省略最外括號並查看您是否獲得了相同的結果。

更新根據以下評論的更多信息,我們不應該忘記V1代碼還保存了計算丟失和準確性等網絡部分。如果我們只提供這些功能,CNTK會抱怨標籤沒有提供。有兩種方法可以解決這個問題。一種可能是提供一些假標籤,以便網絡可以評估這些輔助操作。另一種可能性是確定預測並使用它。如果預測被稱爲V1「P」,這條巨蟒代碼

p = z.find_by_name('p')

應該創建一個CNTK功能只需要爲了計算預測的功能。

+0

謝謝你的支持,但它沒有奏效。我得到的錯誤消息: ValueError異常:此數值爲1點所需的參數 '輸入(' 特徵,[#],[2]) '所請求的輸出(一個或多個) '輸出(' ERR',[],[ ]),輸出('lr',[],[]),輸出('p',[#,],[1])'依賴於,尚未提供。 –

+0

這個錯誤是因爲V1模型還保存了依賴於錯誤消息中提及的'err'和'lr'輸出等標籤的東西。我會更新我的答案,如何避免這個錯誤。 –

相關問題