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


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


Tensorflow.js是Google開發的開源工具包,用於在瀏覽器或節點平台上執行機器學習模型和深度學習神經網絡。它還使開發人員能夠在 JavaScript 中創建機器學習模型,並直接在瀏覽器中或通過 Node.js 使用它們。

tf.layers.simpleRNN() 函數用於創建由單個 SimpleRNNCell 組成的 RNN 層。

用法:

tf.layers.simpleRNN(args)

參數:它接受 args 對象,該對象可以具有以下屬性:

  • units (number):輸出空間的維度,表示為正整數。
  • activation:該層的激活函數。
  • useBias (boolean):該層是否有偏差向量。 True 是默認值。
  • kernelInitializer:卷積核權重矩陣的初始值設定項。
  • recurrentInitializer:recurrentKernel 權重矩陣的初始值設定項。它用於循環狀態的線性變換。
  • biasInitializer:偏置向量的初始值設定項。
  • kernelRegularizer:應用於核權重矩陣的正則化函數。
  • recurrentRegularizer:應用於 recurrentKernel 權重矩陣的正則化函數。
  • biasRegularizer:應用於偏置向量的正則化函數。
  • kernelConstraint:卷積核權重的約束。
  • recurrentConstraint:recurrentKernel 權重的約束。
  • biasConstraint:偏置向量的約束。
  • dropout (number):它是 0 到 1 之間的數字。為輸入的線性變換而丟棄的單位分數。
  • recurrentDropout (number): 它是 0 到 1 之間的數字。為循環狀態的線性變換而丟棄的單位分數。
  • dropoutFunc:包含此內容是為了測試 DI。
  • cell:RNN 單元實例。
  • returnSequences (boolean):是否應返回輸出序列中的最終輸出,或者應返回整個序列。
  • returnState (boolean): 最後的狀態是否應與輸出一起返回。
  • goBackwards (boolean): 如果這是真的,則向後處理輸入序列並返回相反的序列。默認值為 false。
  • stateful (boolean): 如果為 true,則批次中索引 I 處每個樣本的最終狀態將用作下一批索引 i 處樣本的開始狀態(默認值:false)。
  • unroll (boolean): 如果為 true,則網絡將展開;否則,將使用符號循環。雖然展開可以加速 RNN,但它更多的是 memory-intensive。展開時僅接受短序列(默認值: false)。
  • inputDim (number):輸入的維度(整數)。當該層用作模型中的初始層時,此選項(或選項 inputShape)是必需的。
  • inputLength (number): 當輸入序列的長度一定時,必須給出。如果你想將 Flatten 層和 Dense 層鏈接到上遊,你將需要這個參數(沒有它,就無法計算密集輸出的形狀)。
  • inputShape:如果設置了此屬性,它將用於構造一個輸入層,該輸入層將插入到該層之前。
  • batchInputShape:如果設置了此屬性,將創建一個輸入層並將其插入到該層之前。
  • batchSize:如果未提供batchInputShape而提供了inputShape,則使用batchSize來構建batchInputShape。
  • dtype:這是該層的數據類型。 float32 是默認值。該參數僅適用於輸入層。
  • name:這是圖層的名稱,是字符串類型。
  • trainable:如果該層的權重可以通過擬合來改變。 True 是默認值。
  • weights:圖層的初始權重值。
  • inputDType:它用於舊版支持。

返回:它返回一個對象(SimpleRNN)。

示例 1:

Javascript


import * as tf from "@tensorflow/tfjs"; 
  
const input = tf.input({ shape: [4, 3] }); 
const simpleRNNLayer = tf.layers.simpleRNN({  
    units: 4,  
    returnSequences: true,  
    returnState: true 
}); 
  
let output, finalState; 
  
[output, finalState] = simpleRNNLayer.apply(input); 
  
const model = tf.model({  
    inputs: input,  
    outputs: output  
}); 
  
const x = tf.tensor3d([1, 2, 3, 4, 5, 6, 7,  
        8, 9, 10, 11, 12], [1, 4, 3]); 
          
model.predict(x).print();

輸出:

Tensor
   [[[0.9078521, -0.9811671, 0.7162469, 0.9916067],
     [0.9999183, -0.9997805, 0.8239585, 0.9999147],
     [0.9999995, -0.9999998, 0.9744635, 0.9999991],
     [1        , -1        , 0.9965866, 1        ]]]

示例 2:

Javascript


import * as tf from "@tensorflow/tfjs"; 
  
const input = tf.input({ shape: [5, 4] }); 
const simpleRNNLayer = tf.layers.simpleRNN({ 
    units: 8,  
    returnSequences: true, 
    returnState: true
}); 
  
let output, finalState; 
  
[output, finalState] = simpleRNNLayer.apply(input); 
  
const model = tf.model({ inputs: input, outputs: output }); 
  
const x = tf.tensor3d([1, 2, 3, 4, 5, 6, 7,  
    8, 9, 10, 11, 12, 13, 14, 15,  
    16, 17, 18, 19, 20], [1, 5, 4] 
); 
  
model.predict(x).print();

輸出:

Tensor
   [[[0.2636383 , 0.9990318, 0.1660565, 0.9994429, -0.1762104, -0.9415753, 0.2943841, 0.7435381],
     [-0.9700606, 0.9999998, 0.5248303, 1        , -0.6762528, -0.9998503, 0.7585124, 0.836854 ],
     [-0.9959837, 1        , 0.5081902, 1        , -0.9194239, -0.9999997, 0.9733018, 0.988907 ],
     [-0.9993195, 1        , 0.8597047, 1        , -0.9791942, -1        , 0.9934399, 0.9968426],
     [-0.999855 , 1        , 0.9431108, 1        , -0.9907937, -1        , 0.9975212, 0.9990824]]]

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



相關用法


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