當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Tensorflow.js tf.layers.rnn()用法及代碼示例


Tensorflow.js是Google開發的開源庫,用於在瀏覽器或節點環境中運行機器學習模型和深度學習神經網絡。

Tensorflow.js tf.layers.rnn() 函數本質上是循環層的基類。

用法:

tf.layers.rnn( args );

參數:

  • args: 它是一個具有以下字段的對象:
    • cell: 它應該是 RNN 單元的實例或 RNN 單元實例的數組。
    • returnSequences:  它應該是布爾值。它定義了這兩個天氣最後輸出或完整序列在輸出序列中返回。
    • returnState: 它應該是布爾值。它定義輸出中返回的最後狀態。
    • goBackwards: 它應該是布爾值。它定義是否以相反和相反的順序處理輸入。
    • stateful: 它應該是布爾值。它定義是否使用批次的最後狀態作為當前批次的初始狀態。
    • unroll: 它應該是布爾值。它告訴是否使用展開的網絡,否則使用符號循環。
    • inputDim: 它應該是一個數字。當該層用作模型的第一層時使用此選項。它定義了層中輸入的維度。
    • inputLength: 它應該是一個數字。當輸入數據的順序恒定時,應使用此字段。
    • inputShape: 它應該是一個數字數組。該字段用於創建輸入層,該輸入層用於插入到該層之前。
    • batchInputShape: 它應該是一個數字數組。如果提供 inputShape 和此字段作為創建用於插入到該圖層之前的輸入圖層的參數,則將使用此字段。
    • batchSize: 它應該是一個數字。在沒有batchInputShape的情況下,該字段用於使用inputShape創建batchInputShape。 batchInputShape:[batchSize,...inputShape]。
    • dtype: 如果該層用作輸入層,則該字段用作該層的數據類型。
    • name: 它應該是字符串類型。該字段定義該層的名稱。
    • trainable: 它應該是布爾值。該字段定義該層的權重是否可以通過擬合進行訓練。
    • weights: 這應該是一個定義該層初始權重值的張量。
    • inputDType: 這是用於舊版支持的數據類型。

返回值:它返回 RNN。

該層支持使用任意數量的時間步長對輸入數據進行屏蔽。我們可以將 RNN 層設置為‘stateful’,這意味著為一個批次中的樣本計算的狀態將被重新用作下一個批次的初始狀態。

輸入形狀應該是形狀為 [batchSize, timeSteps, inputDim ] 的 3D 張量

根據提供給該層的參數和值,我們得到輸出層的形狀:

示例 1:如果 returnState 設置為 true,則此函數返回張量數組,其中第一個張量是輸出。剩餘的張量是最後一個時間步的狀態。數組中所有張量的形狀將為[batchSize,units]。

Javascript


// Cells for RNN 
const cells = [
   tf.layers.lstmCell({units: 4}),
   tf.layers.lstmCell({units: 8}),
];
const rnn = tf.layers.rnn({cell: cells, returnState:true });
// Create an input with 8 time steps and
// 16 length vector at each step.
const Input_layer = tf.input({shape: [8, 16]});
const Output_layer = rnn.apply(Input_layer);
console.log(JSON.stringify(Output_layer[0].shape));

輸出:

[null, 8]

示例 2:如果未設置 returnState 且 returnSequence 設置為 true,則輸出張量將具有以下形狀:[batchSize, timeSteps,units]。

Javascript


// Cells for RNN 
const cells = [
    tf.layers.lstmCell({units: 16}),
    tf.layers.lstmCell({units: 32}),
];
const rnn = tf.layers.rnn({
    cell: cells,
    returnState: false, 
    returnSequences: true
});
// Create an input with 8 time steps and
// 16 length vector at each step.
const Input_layer = tf.input({shape: [4, 8]});
const Output_layer = rnn.apply(Input_layer);
console.log(JSON.stringify(Output_layer.shape));

輸出:

[null,4,32]

示例 3:如果 returnState 和 returnSequences 都沒有定義,那麽輸出的形狀將為 [batchSize,units]。

Javascript


// Cells for RNN
const cells = [
   tf.layers.lstmCell({units: 4}),
   tf.layers.lstmCell({units: 8}),
];
const rnn = tf.layers.rnn({cell: cells});
// Create an input with 10 time steps and 
// 20 length vector at each step.
const input = tf.input({shape: [10, 20]});
const output = rnn.apply(input);
console.log(JSON.stringify(output.shape));

輸出:

[null,8]

參考:https://js.tensorflow.org/api/latest/#layers.rnn



相關用法


注:本文由純淨天空篩選整理自satyam00so大神的英文原創作品 Tensorflow.js tf.layers.rnn() Function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。