当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。