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

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

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

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

.layers.gruCell( )函数用于为 GRU 创建一个单元类。

句法:

tf.layers.gruCell (args)

参数:

  • 循环激活:它是一个张量输入,是用于循环步骤的激活函数,默认为硬 sigmoid。如果传递 null,则不应用激活。
  • 实现:它是一个张量输入,有两种实现模式:
    1. 首先,mode 将把它的操作构建为大量的小点积和加法。
    2. 其次,mode 会将它们分批成更少、更大的操作。这些模式在不同的硬件和不同的应用程序上会有不同的性能配置文件。
  • resetAfter:它是一个张量输入,可以是 GRU 约定是否在矩阵乘法之后或之前应用重置门,其中 false=”before” 和 true=”after”。
  • 单位:它是一个张量输入,具有正整数单位,是输出空间的一个维度。
  • 激活:它是张量输入,是要使用的激活函数,默认为双曲正切。如果传递 null,将应用线性激活。
  • useBias:这是一个张量输入,其中偏置向量用于该层。
  • KernelInitializer:它是一个张量输入,是内核权重矩阵的初始化器,用于输入的线性变换。
  • 循环初始化器:它是一个张量输入,是循环核权重矩阵的初始化器,用于循环状态的线性变换。
  • biasInitializer:它是一个张量输入,是偏置向量的初始化器。
  • kernelRegularizer:它是张量输入,其中正则化函数应用于内核权重矩阵。
  • reverseRegularizer:它是张量输入,其中正则化函数应用于recurrent_kernel 权重矩阵。
  • biasRegularizer:它是张量输入,其中正则化函数应用于偏置向量。
  • kernelConstraint:它是一个张量输入,其中约束函数应用于核权重矩阵。
  • 循环约束:它是一个张量输入,其中约束函数应用于循环内核权重矩阵。
  • biasConstraint:这是一个张量输入,其中约束函数应用于偏置向量。
  • dropout:它是一个张量输入,其中要丢弃的部分单位用于输入的线性变换和 0 到 1 之间的浮点数。
  • reverseDropout:这是一个张量输入,其中要丢弃的部分单位用于循环状态的线性变换和 0 到 1 之间的浮点数。
  • inputShape:这是一个张量输入,将用于创建一个输入层以插入到该层之前(如果已定义)。它仅适用于输入层。
  • batchInputShape:这是一个张量输入,将用于创建一个输入层以插入到该层之前(如果已定义)。它仅适用于输入层。
  • batchSize:它是一个张量输入,其中 batchSize 用于构造 batchInputShape ,如果指定了 inputShape 而未指定 batchInputShape。
  • dType:这是一个张量输入,是该层的数据类型,默认为“float32”。
  • name:这是一个张量输入,是该层的名称。
  • trainable:这是一个张量输入,默认为 true,该层的权重是否可通过 fit 更新。
  • 权重:它是一个张量输入,可以是层的初始权重值。
  • inputDType:它是一个张量输入,具有遗留支持,不用于新代码。

返回值:返回 GRUCell。

示例 1:在此示例中,GRUCell 与 RNN 子类 GRU 的不同之处在于,它的 apply 方法仅获取单个时间步的输入数据并在该时间步返回单元格的输出,而 GRU 将输入数据通过多个时间步长。

Javascript
// Importing the tensorflow.js library
import * as tf from "@tensorflow/tfjs"
  
// Defining input elements
const cell = tf.layers.gruCell({units: 3});
const input = tf.input({shape: [11]});
const output = cell.apply(input);
  
console.log(JSON.stringify(output.shape));


Javascript
// Importing the tensorflow.js library
import * as tf from "@tensorflow/tfjs"
  
// Defining input elements
const cells = [
   tf.layers.gruCell({units: 8}),
   tf.layers.gruCell({units: 16}),
];
const rnn = tf.layers.rnn({
    cell: cells, 
    returnSequences: true
});
  
// Create an input with 20 time steps and 
// a length-30 vector at each step.
const input = tf.input({shape: [20, 30]});
const output = rnn.apply(input);
  
console.log(JSON.stringify(output.shape));


输出:

[null,11]

示例 2:在此示例中,GRUCell 的 Instance(s) 可用于构建 RNN 层。该工作流程最典型的用途是将多个单元格组合成一个堆叠的 RNN 单元格(即内部的 StackedRNNCell),并使用它来创建一个 RNN。

Javascript

// Importing the tensorflow.js library
import * as tf from "@tensorflow/tfjs"
  
// Defining input elements
const cells = [
   tf.layers.gruCell({units: 8}),
   tf.layers.gruCell({units: 16}),
];
const rnn = tf.layers.rnn({
    cell: cells, 
    returnSequences: true
});
  
// Create an input with 20 time steps and 
// a length-30 vector at each step.
const input = tf.input({shape: [20, 30]});
const output = rnn.apply(input);
  
console.log(JSON.stringify(output.shape));

输出:

[null,20,16]

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