2017-03-31 22 views
0

我正在構建一個處理幾個並行序列的LSTM,並且我正在努力尋找處理動態軸的任何brainscript示例。Brainscript示例動態軸

在我的具體情況下,一個例子由二進制標籤和N個序列組成,其中每個序列i具有固定長度(但對於j <> i可能不同)。 例如,序列1總是長度1024,序列2是長度4096,序列3是長度1024 我通過在CNTK文本格式打包它們並聯表達這些序列:

0 |Label 1 |S1 0 |S2 1 |S3 0 
0 |S1 1 |S2 1 |S3 1 
... another 1021 rows 
0 |S2 0 
0 |S2 1 
... another 3070 rows with only S2 defined 
1 |Label 0 |S1 0 |S2 1 |S3 0 
1 |S1 1 |S2 1 |S3 0 
... another 1021 rows 
1 |S2 1 
1 |S2 0 
... another 3070 rows with only S2 defined 
2 |Label ... 

等。我覺得我過去構建過這樣的例子,但我一直無法追蹤任何示例配置,甚至無法指定任何指定動態軸的BS示例。這種方法可行嗎?

回答

1

G2P示例(...\Examples\SequenceToSequence\CMUDict\BrainScript\G2P.cntk)使用多個動態軸。這是該文件的一個片段:

# inputs and axes must be defined on top-scope level in order to get a clean node name from BrainScript. 
inputAxis = DynamicAxis() 
rawInput = Input (inputVocabDim, dynamicAxis=inputAxis, tag='feature') 
rawLabels = Input (labelVocabDim, tag='label') 

然而,因爲在你的情況下,軸都具有相同的長度對於每個輸入,您可能還需要考慮到只是把它們分爲固定大小的張量。例如,如果不是1024個值,則只需要1024維的單個值。

選擇取決於您想要對序列執行的操作。你打算對他們進行再發生嗎?如果是這樣,你想把它們保持爲動態序列。如果它們只是您計劃使用的矢量,例如大矩陣產品,則您寧願將它們保留爲靜態軸。

+0

謝謝你的指針,弗蘭克。他們是我想要重複運行的序列,所以我會先嚐試這種方法。 –