2017-07-29 18 views
2

我想看看是否有一種方法來序列數據作爲numpy的陣列到飼料中CTNK定義的文本LSTM模型。我的數據集中的每個實例都是映射回單詞的整數序列,每個序列的長度都不相同。似乎可以將其原始文本數據轉換爲CTF格式,並通過創建reader函數來生成小批量,如this示例中所示,將該數據輸入模型。但是,我想知道是否有辦法將Numpy數組提供給這個模型。飼養numpy的陣列到CNTK LSTM型號

在這個例子再往下,還有的feeding sequences with Numpy的討論,我希望會解決我的問題。然而,這個例子處理的是圖像序列,而不是可變長度的單詞序列。在這個例子的情況下,我們最終得到一個張量爲n的元素,每個元素都是3 x 32 x 32,我們可以設置一個期望這些尺寸的輸入變量。然而,在每個序列具有不同長度的字序列的情況下,這個例子中斷。

上CTNK和numpy的互操作之間基於文本的LSTM的/ RNN的將不勝感激任何幫助。

回答

1

您可能正在尋找:

x = cntk.sequence.input_variable(shape=()) 

下面是一個說明它是如何工作具有可變序列長度的樣本小程序:

import numpy as np 
import cntk 

# define the model 
x = cntk.sequence.input_variable(shape=()) 
z = cntk.sequence.last(x) 

# define the data 
a = [[1,2,3], [4,5], [6,7,8,9], [0]] 
b = [np.array(i, dtype=np.float32) for i in a] 

# evaluate 
res = z.eval({x: b}) 
print(res) 
+0

但如何此後繼續LSTM? –

+0

「x」是LSTM的輸入功能。當您正在訓練LSTM時,只需傳遞可變長度numpy陣列作爲輸入數據。變量'b'模仿你的輸入數據。一個簡單的實施例 - ' H =復發(LSTM(150))(X) Z =密集(1024)(H) ' –