📜  Tensorflow.js tf.layers.stackedRNNCells()函数

📅  最后修改于: 2022-05-13 01:56:55.961000             🧑  作者: Mango

Tensorflow.js tf.layers.stackedRNNCells()函数

简介: Tensorflow.js 是谷歌开发的一个开源库,用于在浏览器或节点环境中运行机器学习模型和深度学习神经网络。

Tensorflow.js tf.layers.stackedRNNCells()函数用于堆叠 RNN 单元并使它们表现为单个单元。

句法:

tf.layers.stackedRNNCells(arge); 

参数:上述方法接受以下参数:

  • args:这是一个对象类型。它具有以下字段:
    • 单元格:它是应该堆叠在一起的实例 RNNCell 的数组。
    • InputShape:它应该是 null 或数字数组。它用于创建插入该层之前的输入层。它仅用于输入层。
    • batchinputShape:它应该是一个数字数组的空值。它用于创建插入该层之前的输入层。它比 inputShape 具有更高的优先级,因此如果定义了 batchinpurtShape,它将用于创建输入层。
    • batchSize:应该是一个数字。在没有 batchinputShape 的情况下,它用于创建带有 InputShape 的 batchinputShape,它将是 [batchSize, ...inputSize]。
    • dtype:它是输入层的数据类型。默认数据——这个输入层的类型是 float32。
    • 名称:它应该是一个字符串。它定义了输入层的名称。
    • 权重:应该是张量。其中定义了输入层的初始权重值。
    • inputDtype:应该是数据类型。它用于支持旧版。

返回:它返回一个对象(StackedRNNCells)。

示例 1:在此示例中,我们将看到简单的 RNNCells 如何与 tf.layers.stackedRNNCells() 堆叠并作为单个 RNNCells 工作:

Javascript
import * as tf from "@tensorflow/tfjs"
  
// Creating RNNcells for stack
const cell1 = tf.layers.simpleRNNCell({units: 2});
const cell2 = tf.layers.simpleRNNCell({units: 4});
  
// Stack all the RNNCells 
const cell = tf.layers.stackedRNNCells({ cells: [cell1, cell2]});
  
const input = tf.input({shape: [8]});
const output = cell.apply(input);
  
console.log(JSON.stringify(output.shape));


Javascript
import * as tf from "@tensorflow/tfjs";
  
// Creating simple RNNCell for stacking together
const cell1 = tf.layers.simpleRNNCell({ units: 4 });
const cell2 = tf.layers.simpleRNNCell({ units: 8 });
const cell3 = tf.layers.simpleRNNCell({ units: 12 });
const cell4 = tf.layers.simpleRNNCell({ units: 16 });
  
const stacked_cell = tf.layers.stackedRNNCells({
    cells: [cell1, cell2, cell3, cell4],
    name: "Stacked_RNN",
    dtype: "int32",
});
  
const rnn = tf.layers.rnn({ cell: stacked_cell, returnSequences: true });
  
// Create input with 10 steps and 20 length vector at each step.
const input = tf.input({ shape: [8, 32] });
const output = rnn.apply(input);
  
console.log("Shape of output should be in : ", JSON.stringify(output.shape));


输出:

[null,8]

示例 2:在本示例中,我们将在 stackRNNCells 的帮助下将多个单元格组合成一个堆叠的 RNN 单元格,并用于创建 RNN。

Javascript

import * as tf from "@tensorflow/tfjs";
  
// Creating simple RNNCell for stacking together
const cell1 = tf.layers.simpleRNNCell({ units: 4 });
const cell2 = tf.layers.simpleRNNCell({ units: 8 });
const cell3 = tf.layers.simpleRNNCell({ units: 12 });
const cell4 = tf.layers.simpleRNNCell({ units: 16 });
  
const stacked_cell = tf.layers.stackedRNNCells({
    cells: [cell1, cell2, cell3, cell4],
    name: "Stacked_RNN",
    dtype: "int32",
});
  
const rnn = tf.layers.rnn({ cell: stacked_cell, returnSequences: true });
  
// Create input with 10 steps and 20 length vector at each step.
const input = tf.input({ shape: [8, 32] });
const output = rnn.apply(input);
  
console.log("Shape of output should be in : ", JSON.stringify(output.shape));

输出:

Shape of output should be in :  [null,8,16]

参考: https://js.tensorflow.org/api/latest/#layers.stackedRNNCells