使用 BrainScript 的最上層命令
主要最上層命令 train
和 test
eval
/ 會在[定型]、[測試]、[評估]頁面上描述。 以下詳述進一步的最上層命令。
調整命令
此命令會使用 KL 發散正規化來調整已定型的模型。 建議您使用模型編輯來執行所有其他調整。 配接命令與定型命令非常類似,不同之處在于其具有兩個以上的參數:
originalModelFileName
:將調整之模型的檔案名。refNodeName
:計算網路中將用於 KL 發散正規化之節點的名稱。
CV
此命令會評估開發 (或交叉驗證) 集上不同 Epoch 的一系列模型,並顯示最佳模型的資訊。 除了用於測試命令的參數之外,此命令也會使用參數
crossValidationInterval
:3 個整數的陣列,用來識別要評估的起始 Epoch、epoch 遞增和最終 Epoch。 例如,3:2:9 表示會評估模型 3,5,7 和 9。sleepTimeBetweenRuns
:執行之間等候的秒數。 只有在 GPU 太熱時,才需要此專案。
寫入命令
此命令會將輸出節點的值寫入檔案。 相關參數為
reader
:讀取器組態區塊以讀取輸入資料。writer
:寫入器組態區塊,以決定如何寫入輸出資料。 如果未指定此值,則會使用 outputPath 參數。minibatchSize
:讀取和處理資料集時要使用的迷你批次大小。epochSize
:資料集的大小。 預設值為 0。 如果資料集設定為 0,則會評估整個資料集。modelPath
:要用來計算輸出的模型路徑。outputPath
:要以文字格式寫入輸出的檔案路徑。 如果寫入器區塊存在,則會忽略此參數。 outputPath 或寫入器必須存在。outputNodeNames
:要寫入檔案之一或多個輸出節點名稱的陣列。
編輯命令
此命令會編輯模型,並將修改過的模型儲存至檔案。 這已被取代。 相關聯的參數如下:
editPath
:要執行之 MEL 腳本的路徑。ndlMacros
:將在 MEL 腳本中載入和使用之 NDL 宏檔案的路徑。
SVD 命令
此命令會使用可學習參數的 SVD 分解來執行低排名近似值。 主要動機是使用兩個較低排名矩陣來分解加權矩陣,以改善推斷速度,同時保留精確度。 例如:
svd = [
action = "SVD"
modelPath = "train\lstm.model.67"
outputModelPath = "train\lstm.model.svd"
SVDConfig = "nodeConfigs"
]
相關聯的參數區塊如下:
modelPath
:指定要載入初始模型的位置。outputModelPath
:指定要儲存修訂模型的位置。SVDConfig
:組態檔,指定如何針對不同節點群組執行 SVD。 此組態的格式為兩欄:<NodeNameRegex> <float>
第一個資料行是符合一個群組中節點名稱的正則運算式。 第二個數據行是浮點數,指出 SVDenergy 在 SVD 之後會保留哪些百分比,其中 SVD 能源會定義為單數值的總和。 例如,組態
`LSTMoutput[1-3].Wx[ifco] 0.4`
`LSTMoutput[1-3].Wh[ifco] 0.6`
會在 LSTM 中對非週期性連線造成更積極 SVD (0.4) 分解, (從 x 到 i,f,c,o 閘道) ,而從 h 到 i,f,c,o 閘道) 定義參數名稱的遞迴性連線 (較不積極 SVD 分解。
Dumpnode 命令
此命令會將節點 () 的資訊傾印到輸出檔案,也可以在 MEL 中透過更大的控制來完成。 相關的參數如下:
modelPath
:包含要傾印之節點的模型檔案路徑。nodeName
:要寫入檔案的節點名稱。 如果未指定所有節點,則會傾印。nodeNameRegex
:要寫入檔案之節點名稱的正則運算式。 如果指定,則會nodeName
忽略 參數。outputFile
:輸出檔案的路徑。 如果未指定,則會自動根據 modelPath 產生檔案名。printValues
:決定是否要在模型中保存節點的值,列印與節點相關聯的值。 預設值為 true。printMetadata
:決定是否要列印與節點相關聯的中繼資料 (節點名稱、維度等) 。 預設值為 true。
WriteWordAndClass 命令 (已被取代)
此命令會讀取文字定型資料、計算定型集中每個單字的出現次數、依計數的遞減順序排序單字、為每個字指定唯一識別碼、將每個單字指派給類別,並產生四欄詞彙檔案和 (已被取代) LMSequenceReader 使用的文字對識別碼對應檔案,以定型類別型語言模型。 相關的參數如下:
inputFile
:文字訓練檔案的路徑。outputVocabFile
:產生的四欄詞彙檔案名稱。 第一欄是文字識別碼,第二欄是字數計數,第三欄是單字,第四欄是類別識別碼。outputWord2Cls
:產生的文字到類別對應檔案的路徑。outputCls2Index
:所產生類別對 wordId 對應檔案的路徑。vocabSize
:所需的詞彙大小。nbrClass
:所需的類別數目。cutoff
:截斷計數。 當字組的計數低於或等於這個值時,會將該字視為 。 預設值為 2。 請注意,只有當所需的詞彙大小大於定型集中的實際字數時,才會使用此參數。
CreateLabelMap 命令
通常很容易手動製作標籤對應檔案。 不過,有時候您會想要自動產生標籤對應檔案,這是 CreateLabelMap 命令的用途。 目前 UCIFastReader 是唯一支援此動作的讀取器。 相關參數為
section
:參數區塊名稱 (通常是定型區塊) ,其中包含將用來產生標籤對應檔案的讀取器子區塊。 產生的標籤對應檔案將會儲存至此參數區塊之讀取器子區塊中指定的 labelMappingFile。minibatchSize
:建立標籤對應檔案時要使用的迷你批次大小。
DoEncoderDecoder 命令
類神經網路可用來形成網路鏈結。 前幾個網路可以做為編碼器運作,而下列網路可作為解碼器。 每個網路中都會使用特殊節點 PairNetworkNode 來提供其他網路所連線的通訊端。 相關參數為
section
:encoderReader 和 decoderReader 是編碼器和解碼器的讀取器。 同樣地,針對 encoderCVReader 和 decoderCVReader 進行驗證集。encoderNetworkBuilder
和decoderNetworkBuilder
:這些會指定要使用的簡單網路產生器。
BNStat 命令
評估批次正規化節點評估及測試資料集的平均值和變異數很棘手。 雖然平均數和變異數可以在定型時透過執行平均值或 exp 來計算,但我們仍然通常會提供更穩定且強固的方法,以產生批次正規化的平均和變異數 -- 批次正規化統計資料。 必須在定型之後呼叫 命令。 它會為每個 BN 層產生平均數和變異數。
modelPath
:包含定型模型的模型檔案路徑minibatchSize
:評估時的迷你批次大小,與定型 minibatchSize 相同itersPerNode
:每個批次正規化節點的統計資料反復專案reader
:讀取器組態區塊以讀取測試資料。 如需詳細資訊 ,請參閱讀取器區塊enableDistributedMBReading
:平行定型中的分散式讀取