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


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


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

tf.layers.lstm() 函數用於創建由一個 LSTMCell 組成的 RNN 層,LSTM 的 apply 方法對一係列輸入進行操作。輸入的形狀至少需要是二維的,第一個維度是時間步長。 lstm 是 Long-Short 術語內存層。

句法:

  tf.layers.lstm( args ); 

參數:

  • args: 它指定給定的配置對象:
    • recurrentActivation: 它指定將用於循環步驟的激活函數。該參數的默認值為硬 sigmoid。
    • unitForgetBias: 它應該是布爾值。它用於在初始化時將遺忘門的偏差加 1。
    • implementation: 它指定了實現模式。它可以是 1 或 2。為了獲得卓越的性能,建議實施。
    • units: 它是一個數字,表示輸出形狀的維數。
    • activation: 它是一個張量輸入,是要使用的激活函數,默認為雙曲正切。如果傳遞 null,將應用線性激活。
    • useBias: 它是一個布爾值,指示是否使用偏差向量。
    • kernelInitializer: 它是核權重矩陣的初始化器,用於輸入的線性變換。
    • recurrentInitializer: 它是recurrentInitializer權重矩陣的Initializer,用於循環狀態的線性變換。
    • biasInitializer: 它是偏置向量的初始值設定項。
    • kernelRegularizer: 它是應用於核權重矩陣的正則化函數。
    • recurrentRegularizer: 它是應用於 recurrentKernel 權重矩陣的正則化函數。
    • biasRegularizer:  它是應用於偏置向量的正則化函數。
    • kernelConstraint: 它是應用於核權重矩陣的約束函數。
    • recurrentConstraint:  它是應用於 recurrentKernel 權重矩陣的約束函數。
    • biasConstraint: 它是應用於偏置向量的約束函數。
    • dropout: 它是 0 到 1 之間的數字,指示輸入的線性變換要丟棄的單位。
    • recurrentDropout: 它是一個 0 到 1 之間的數字,表示循環狀態的線性變換要下降的單位。
    • dropoutFunc: 這是為了測試 DI 目的而添加的函數。
    • cell: 它應該是 RNN 單元的實例或 RNN 單元實例的數組。
    • returnSequences:  它應該是布爾值。它定義了這兩個天氣最後輸出或完整序列在輸出序列中返回。
    • returnState: 它應該是布爾值。它定義輸出中返回的最後狀態。
    • goBackwards: 它應該是布爾值。它定義是否以相反和相反的順序處理輸入。
    • stateful: 它應該是布爾值。它定義是否使用批次的最後狀態作為當前批次的初始狀態。
    • unroll: 它應該是布爾值。它告訴是否使用展開的網絡,否則使用符號循環。
    • inputDim: 它應該是一個數字。當該層用作模型的第一層時使用此選項。它定義了層中輸入的維度。
    • inputLength: 它應該是一個數字。當輸入數據的順序恒定時,應使用此字段。
    • inputShape: 它應該是一個數字數組。該字段用於創建輸入層,該輸入層用於插入到該層之前。
    • batchInputShape: 它應該是一個數字數組。如果提供輸入形狀和此字段作為創建用於插入到該圖層之前的輸入圖層的參數,則將使用此字段。
    • batchSize: 它應該是一個數字。在沒有batchInputShape的情況下,該字段用於創建具有輸入形狀的batchInputShape。 batchInputShape:[batchSize,...inputShape]。
    • dtype: 如果該層用作輸入層,則該字段用作該層的數據類型。
    • name: 它應該是字符串類型。該字段定義該層的名稱。
    • trainable: 它應該是布爾值。該字段定義該層的權重是否可以通過擬合進行訓練。
    • weights: 這應該是一個定義該層初始權重值的張量。
    • inputDType: 這是用於舊版支持的數據類型。

返回值:它返回 LSTM。

示例 1:

Javascript


import * as tf from "@tensorflow/tfjs"
// Long short term memory layer
const LSTM = tf.layers.lstm({units: 4, returnSequences: true});
// Create an input with 10 time steps.
const input = tf.input({shape: [10, 40]});
const output = LSTM.apply(input);
// Here we get three value 1st value is unknown batch size;
// 2nd value is the sequence length of `input`,
// 3rd value is the `LSTMCell`'s number of units
console.log(JSON.stringify(output.shape));

輸出:

[null,10,4]

示例 2:

Javascript


// Importing the tensorflow.js library
//import * as tf from "@tensorflow/tfjs"
// Create a new model with lstm Layer
const LSTM = tf.layers.lstm({units: 4, returnSequences: true});
// Create a 3d tensor
const x = tf.tensor([1, 2, 3, 4], [2, 2,1]);
// Apply lstm layer to x
const output = LSTM.apply(x);
// Print output
output.print()

輸出:

Tensor
    [[[0.0829882, -0.0169818, -0.1132356, 0.0627953],
      [0.1211651, -0.0538836, -0.2851864, 0.1661802]],

     [[0.0739072, -0.0640151, -0.296207 , 0.1846195],
      [0.0578168, -0.1612808, -0.5005066, 0.3471084]]]

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



相關用法


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