TensorRT IRNNv2Layer
TensorRT IRNNv2Layer
IRNNv2Layer層實現遞歸層,如遞歸神經網絡(RNN)、門控遞歸單元(GRU)和長短期記憶(LSTM)。支持的類型有RNN、GRU和LSTM。它執行一個遞歸操作,其中操作由幾個著名的遞歸神經網絡(RNN)“單元”之一定義。
圖層說明
該層接受輸入序列X,初始隱藏狀態H0,如果該單元是長短期存儲器(LSTM)單元,則為初始單元狀態C0,并產生一個輸出Y,該輸出Y表示跨T個時間步計算的最終RNN“子層”的輸出(見下文)。可選地,該層還可以產生表示最終隱藏狀態的輸出hT,并且,如果單元是LSTM單元,則輸出cT表示最終單元狀態。
將單元的操作定義為函數G(x,h,c)。此函數接受向量輸入x、h和c,并產生最多兩個向量輸出h’和c’,表示執行單元操作后的隱藏狀態和單元狀態。
在默認(單向)配置中,RNNv2層應用如下圖所示的Gas:
 
 
 
 
 
another layer are dropped.
network->markOutput(*pred->getOutput(1));
pred->getOutput(1)->setType(DataType::kINT32);
rnn->getOutput(1)->setName(HIDDEN_OUT_BLOB_NAME);
network->markOutput(*rnn->getOutput(1));
if
 (rnn->getOperation() == RNNOperation::kLSTM)
{
rnn->getOutput(2)->setName(CELL_OUT_BLOB_NAME);
network->markOutput(*rnn->getOutput(2));
};
See the C++ class IRNNv2Layer or the Python
 class IRNNv2Layer for further details.
- RNNv2 Layer Setup
 
網絡的第一層是RNN層。這是在addRNNv2Layer()函數中添加和配置的。該層由以下配置參數組成。
操作
這定義了RNN單元的操作。支持的操作目前有relu、LSTM、GRU和tanh。
方向
這定義了RNN是單向的還是雙向的(BiRNN)。
輸入模式
這定義了RNN的第一層是執行矩陣乘法(線性模式),還是跳過矩陣乘法(跳過模式)。
例如,在sampleCharRNN中使用的網絡中,我們使用了一個線性的、單向的LSTM單元,其中包含層數為層數的層數。下面的代碼顯示了如何創建這個RNNv2層。
auto rnn =network->addRNNv2(*data, LAYER_COUNT, HIDDEN_SIZE, SEQ_SIZE, RNNOperation::kLSTM);
注:對于RNNv2層,需要單獨設置權重和偏差。有關詳細信息,請參見RNNv2層-可選輸入。
有關更多信息,請參閱TensorRT API文檔。
- RNNv2 Layer - Optional Inputs
 
如果存在需要將hidden和cell狀態預初始化為非零值的情況,那么可以通過setHiddenState和setCellState調用對它們進行預初始化。這些是RNN的可選輸入。
C++ code snippet
rnn->setHiddenState(*hiddenIn);
if(rnn->getOperation() == RNNOperation::kLSTM)
rnn->setCellState(*cellIn);
 
Python code snippet
rnn.hidden_state =hidden_in
if rnn.op ==trt.RNNOperation.LSTM:
rnn.cell_state =cell_in
總結
以上是生活随笔為你收集整理的TensorRT IRNNv2Layer的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: NVIDIA® TensorRT™ su
 - 下一篇: TensorRT PoolingLaye