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