TensorRT IRNNv2Layer
TensorRT IRNNv2Layer
IRNNv2Layer層實(shí)現(xiàn)遞歸層,如遞歸神經(jīng)網(wǎng)絡(luò)(RNN)、門(mén)控遞歸單元(GRU)和長(zhǎng)短期記憶(LSTM)。支持的類(lèi)型有RNN、GRU和LSTM。它執(zhí)行一個(gè)遞歸操作,其中操作由幾個(gè)著名的遞歸神經(jīng)網(wǎng)絡(luò)(RNN)“單元”之一定義。
圖層說(shuō)明
該層接受輸入序列X,初始隱藏狀態(tài)H0,如果該單元是長(zhǎng)短期存儲(chǔ)器(LSTM)單元,則為初始單元狀態(tài)C0,并產(chǎn)生一個(gè)輸出Y,該輸出Y表示跨T個(gè)時(shí)間步計(jì)算的最終RNN“子層”的輸出(見(jiàn)下文)。可選地,該層還可以產(chǎn)生表示最終隱藏狀態(tài)的輸出hT,并且,如果單元是LSTM單元,則輸出cT表示最終單元狀態(tài)。
將單元的操作定義為函數(shù)G(x,h,c)。此函數(shù)接受向量輸入x、h和c,并產(chǎn)生最多兩個(gè)向量輸出h’和c’,表示執(zhí)行單元操作后的隱藏狀態(tài)和單元狀態(tài)。
在默認(rèn)(單向)配置中,RNNv2層應(yīng)用如下圖所示的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
網(wǎng)絡(luò)的第一層是RNN層。這是在addRNNv2Layer()函數(shù)中添加和配置的。該層由以下配置參數(shù)組成。
操作
這定義了RNN單元的操作。支持的操作目前有relu、LSTM、GRU和tanh。
方向
這定義了RNN是單向的還是雙向的(BiRNN)。
輸入模式
這定義了RNN的第一層是執(zhí)行矩陣乘法(線性模式),還是跳過(guò)矩陣乘法(跳過(guò)模式)。
例如,在sampleCharRNN中使用的網(wǎng)絡(luò)中,我們使用了一個(gè)線性的、單向的LSTM單元,其中包含層數(shù)為層數(shù)的層數(shù)。下面的代碼顯示了如何創(chuàng)建這個(gè)RNNv2層。
auto rnn =network->addRNNv2(*data, LAYER_COUNT, HIDDEN_SIZE, SEQ_SIZE, RNNOperation::kLSTM);
注:對(duì)于RNNv2層,需要單獨(dú)設(shè)置權(quán)重和偏差。有關(guān)詳細(xì)信息,請(qǐng)參見(jiàn)RNNv2層-可選輸入。
有關(guān)更多信息,請(qǐng)參閱TensorRT API文檔。
- RNNv2 Layer - Optional Inputs
如果存在需要將hidden和cell狀態(tài)預(yù)初始化為非零值的情況,那么可以通過(guò)setHiddenState和setCellState調(diào)用對(duì)它們進(jìn)行預(yù)初始化。這些是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
總結(jié)
以上是生活随笔為你收集整理的TensorRT IRNNv2Layer的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: NVIDIA® TensorRT™ su
- 下一篇: TensorRT PoolingLaye