当前位置: 首页 > 工具软件 > Visor.js > 使用案例 >

tensorflow.js 训练模型和可视化训练时用到的高频API详解

百里承业
2023-12-01

tf.js 实战学习笔记

tfvis.render.scatterplot (container,data,opts?)

  • tfjs-vis API 的 CHARTS part

  • 绘制散点图(文档见 https://js.tensorflow.org/api_vis/1.4.3/#render.scatterplot)

    const series1 = Array(100).fill(0)
    .map(y => Math.random() * 100 - (Math.random() * 50))
    .map((y, x) => ({ x, y, }));
    
    const series2 = Array(100).fill(0)
    .map(y => Math.random() * 100 - (Math.random() * 150))
    .map((y, x) => ({ x, y, }));
    
    const series = ['First', 'Second'];
    const data = { values: [series1, series2], series }
    
    const surface = { name: 'Scatterplot', tab: 'Charts' };
    tfvis.render.scatterplot(surface, data);
    
  • 参数:

    • container (HTMLElement|{name: string, tab?: string}|Surface|{drawArea: HTMLElement})
    • data (Object)
      • values (Point2D[][]|Point2D[]) {x,y}元组的数组(或嵌套数组)。
      • series (string[]) 系列名称/标签
      • opts (Object) 可选的
        • xAxisDomain([number,number]) 被zoomToFit覆盖的 x 轴的区域
        • yAxisDomain([number,number]) 被zoomToFit覆盖的 y 轴的区域
        • zoomToFit (boolean) 将图表范围设置为仅适合数据。这可能会修改轴比例,但允许将更多数据拟合到视图中。
        • seriesColors (string []) 绘制的每个系列的颜色。有效CSS颜色字符串的数组。
        • width (number) 图表的宽度(以像素为单位)
        • height (number) 图表高度(以像素为单位)
        • xLabel (string) xAxis的标签
        • yLabel (string) yAxis的标签
        • fontSize (number) 以px为单位的fontsize
        • xType (‘quantitative’|‘ordinal’|‘nominal’) 将自动设置
        • yType (‘quantitative’|‘ordinal’|‘nominal’) 将自动设置
  • 返回: Promise

tf.Sequential extends tf.LayersModel

  • API Reference 中的 MODELS part 的 Creation 部分
  • 具有一叠层的模型,从一个层到另一个层线性地进给。tf.sequential() 是一个工厂函数,可创建 tf.Sequential 的实例。
const model = tf.sequential();
  model.add(tf.layers.dense({
      units: 1,
      inputShape: [2],
      activation: 'sigmoid'
  }));
  model.compile({
      loss: tf.losses.logLoss,
      optimizer: tf.train.adam(0.1)
  });

  const inputs = tf.tensor(data.map(p => [p.x, p.y]));
  const labels = tf.tensor(data.map(p => p.label));

  await model.fit(inputs, labels, {
      batchSize: 40,
      epochs: 20,
      callbacks: tfvis.show.fitCallbacks(
          { name: '训练效果' },
          ['loss']
      )
  });

  window.predict = (form) => {
      const pred = model.predict(tf.tensor([[form.x.value * 1, form.y.value * 1]]));
      alert(`预测结果:${pred.dataSync()[0]}`);
  };
  • add (layer)
    • 在图层堆栈的顶部添加一个图层实例。
    • 参数:
      • layer (tf.layers.Layer) 层实例
    • 返回:void

tf.LayersModel extends Container|tfc.InferenceModel

  • API Reference 的 MODELS part 的 Classes 部分
  • tf.LayersModel 是 TensorFlow.js 中训练,推理和评估的基本单元。要创建 tf.LayersModel,请使用 tf.LayersModel。
  • 另请参见: tf.Sequential,tf.loadLayersModel()。
  • compile (args)
    • 配置并准备用于训练和评估的模型。compile 方法为模型配备了优化程序,损耗 and/or 度量。在未编译的模型上调用 fit 或 evaluate 会引发错误。
    • 参数:
      • args (Object) a ModelCompileArgs 指定用于拟合和评估该模型的损失,优化器和度量。
        • optimizer (string|tf.train.Optimizer) tf.train.Optimizer 的实例或 Optimizer 的字符串名称。
        • loss (string|string[]|{[outputName: string]: string}|LossOrMetricFn| LossOrMetricFn[]|{[outputName: string]: LossOrMetricFn}) 对象函数或对象函数的名称。如果模型有多个输出,则可以通过传递字典或损失数组来在每个输出上使用不同的损失。然后,将由模型最小化的损失值将是所有单个损失的总和。
        • metrics (string|LossOrMetricFn|Array| {[outputName: string]: string | LossOrMetricFn}) 训练和测试期间模型要评估的度量标准列表。通常,您将使用 metrics=[‘accuracy’]。要为多输出模型的不同输出指定不同的度量标准,您还可以传递一个字典。
    • 返回:void
  • fit (x, y, args?)
    • 为模型训练固定的次数(数据集上的迭代)
    • 参数:
      • x (tf.Tensor|tf.Tensor[]|{[inputName: string]: tf.Tensor}) tf.tensor 训练数据,如果模型有多个输入,则为tf.Tensor的数组。如果模型中的所有输入均已命名,则还可以传递将输入名称映射到 tf.Tensor 的字典。
      • y (tf.Tensor|tf.Tensor[]|{[inputName: string]: tf.Tensor}) tf.Tensor 的目标(标签)数据的张量;如果模型有多个输出,则为 tf.Tensor 的数组。如果模型中的所有输出均已命名,则还可以将输出名称映射到 tf.Tensor 的字典。
      • args (Object) A ModelFitArgs,包含可选字段。 可选的
        • batchSize (number) 每个梯度更新的样本数。如果未指定,则默认为32。
        • epochs (number) 整数,迭代训练数据数组的次数
        • verbose (ModelLoggingVerbosity) 详细度级别。
          • 预期为0、1或2。默认值:1。
            • 0-在fit()调用期间没有打印的消息。
            • 1-在Node.js(tfjs-node)中,打印进度条,以及损耗和指标值以及训练速度的实时更新。在浏览器中:无动作。这是默认值。
            • 2-尚未实施。
        • callbacks (BaseCallback[]|CustomCallbackArgs|CustomCallbackArgs[]) 训练期间要调用的回调列表。可以具有以下一个或多个回调:
          • onTrainBegin(logs):训练开始时调用。
          • onTrainEnd(logs):培训结束时调用。
          • onEpochBegin(epoch, logs):在每个纪元开始时调用。
          • onEpochEnd(epoch, logs):在每个时代结束时调用。
          • onBatchBegin(batch, logs):在每批开始时调用。
          • onBatchEnd(batch, logs):每批结束时调用。
          • onYield(epoch, batch, logs):yieldEvery 使用当前训练次数,批处理和日志每毫秒调用一次。日志与中的日志相同 onBatchEnd()。请注意,onYield 可以跳过批次或时代。另请参阅 yieldEvery 以下文档。
        • validationSplit (number) 在 0 到 1 之间浮动,用作训练数据的一部分训练数据。模型将分开训练数据的这一部分,不对其进行训练,并且将在每个时期结束时评估此数据的损失和任何模型度量。在改组之前,从 x 和 y 中提供的最后一个样本中选择验证数据
        • validationData ([ tf.Tensor|tf.Tensor[], tf.Tensor|tf.Tensor[] ]|[tf.Tensor | tf.Tensor[], tf.Tensor|tf.Tensor[], tf.Tensor|tf.Tensor[]]) 在每个时期结束时用于评估损失的数据和任何模型指标。该模型将不会根据此数据进行训练。这可以是一个元组 [xVal,yVal] 或一个元组 [xVal,yVal,valSampleWeights]。该模型将不会根据此数据进行训练。validationData 将覆盖 validationSplit。
        • shuffle (boolean) 是否在每个时期之前随机选取训练数据。当 stepsPerEpoch 不是 null 时没有任何效果。
        • classWeight (ClassWeight|ClassWeight[]|ClassWeightMap) 可选的对象,将类索引(整数)映射到权重(浮点数),以应用于训练期间该类样本的模型损失。这有助于告诉模型对代表性不足的类的样本给与更多关注。

model.predict (x, args?)

  • API Reference 的 MODELS part 的 Classes 部分
  • 生成输入样本的输出预测。计算是分批进行的。
  • 注意:目前不支持predict()的“step”模式。这是因为 TensorFlow.js 核心后端是必需的。
    参数:
    x (tf.Tensor|tf.Tensor[]) 输入数据,作为张量,如果模型有多个输入 Array,则为 tf.Tensor 的一个。
    args (Object) 包含可选字段的 ModelPredictArgs 对象。 可选的
    batchSize (number) 可选。批次大小(整数)。如果未指定,则默认为32。
    verbose (boolean) 可选。详细模式。默认为 false。
    返回值: tf.Tensor | tf.Tensor []
  • 示例代码如下:
window.predict = () => {
    const input = tf.tidy(() => {
        return tf.image.resizeBilinear(
            tf.browser.fromPixels(canvas),
            [28, 28],
            true
        ).slice([0, 0, 0], [28, 28, 1])
        .toFloat()
        .div(255)
        .reshape([1, 28, 28, 1]);
    });
    const pred = model.predict(input).argMax(1);
    alert(`预测结果为 ${pred.dataSync()[0]}`);
};

tf.layers.dense (args)

  • API Reference 的 Basic part
  • 创建密集(完全连接)层。
  • 该层实现以下操作: output = activation(dot(input, kernel) + bias)
  • activation 是作为 activation 参数传递的逐元素激活函数。
  • kernel 是由图层创建的权重矩阵。
  • bias 是由层中产生的偏置矢量(仅适用如果 useBias 是 true)。
  • 输入形状: *
  • nD tf.Tensor 的形状(batchSize, …, inputDim)。
  • 最常见的情况是带有 shape 的 2D 输入(batchSize, inputDim)。
  • 输出形状: *
  • nD tf.Tensor 的形状(batchSize, …, units)。
  • 例如,对于具有 shape 的2D输入(batchSize, inputDim),输出将具有 shape (batchSize, units)。
  • 注意:如果层的输入的秩大于2,则在与内核的初始点积之前将其展平。
  • 参数:
    • args (Object)
      • units (number) 正整数,输出空间的维数。
      • activation (‘elu’|‘hardSigmoid’|‘linear’|‘relu’|‘relu6’|‘selu’|‘sigmoid’|‘softmax’|‘softplus’|‘softsign’|‘tanh’) 激活函数。如果未指定,则不应用任何激活。
      • useBias (boolean) 是否施加偏差。
      • kernelInitializer (‘constant’|‘glorotNormal’|‘glorotUniform’|‘heNormal’|‘heUniform’|‘identity’|‘leCunNormal’|‘leCunUniform’|‘ones’|‘orthogonal’|‘randomNormal’|‘randomUniform’| ‘truncatedNormal’|‘varianceScaling’|‘zeros’| string |tf.initializers.Initializer) 密集核权重矩阵的初始化程序。
      • biasInitializer (‘constant’|‘glorotNormal’|‘glorotUniform’|‘heNormal’|‘heUniform’|‘identity’|‘leCunNormal’|‘leCunUniform’|‘ones’|‘orthogonal’|‘randomNormal’|‘randomUniform’| ‘truncatedNormal’|‘varianceScaling’|‘zeros’| string |tf.initializers.Initializer) 偏置向量的初始化器。
      • inputDim (number) 如果指定,则将 inputShape 定义为[inputDim]。
      • kernelConstraint (‘maxNorm’|‘minMaxNorm’|‘nonNeg’|‘unitNorm’| string |tf.constraints.Constraint) 限制内核权重。
      • biasConstraint (‘maxNorm’|‘minMaxNorm’|‘nonNeg’|‘unitNorm’| string |tf.constraints.Constraint) 偏向向量的约束。
      • kernelRegularizer (‘l1l2’| string | Regularizer)正则化函数应用于密集的内核权重矩阵。
      • biasRegularizer (‘l1l2’| string | Regularizer)正则化函数应用于偏置向量。
      • activityRegularizer (‘l1l2’| string | Regularizer) 正则化函数应用于激活。
      • inputShape ((null | number)[]) 如果已定义,将用于创建要在该层之前插入的输入层。如果inputShape和batchInputShape同时定义, batchInputShape将使用。此参数仅适用于输入层(模型的第一层)。
      • batchInputShape ((null | number)[]) 如果已定义,将用于创建要在该层之前插入的输入层。如果inputShape和batchInputShape同时定义, batchInputShape将使用。此参数仅适用于输入层(模型的第一层)。
      • batchSize (number) 如果inputShape被指定并且batchInputShape被未指定, batchSize被用于构造batchInputShape:[batchSize, …inputShape]
      • dtype (‘float32’|‘int32’|‘bool’|‘complex64’|‘string’) 此层的数据类型。默认为’float32’。此参数仅适用于输入层(模型的第一层)。
      • name (string) 此层的名称。
      • trainable (boolean) 此层的权重是否可更新 fit。默认为true。
      • weights ((tf.Tensor[]) 图层的初始权重值。
      • inputDType (‘float32’|‘int32’|‘bool’|‘complex64’|‘string’) 旧版支持。不要用于新代码。
        返回: tf.layers.Layer

tfvis.visor().surface (options)

  • tfjs-vis API 的 VISOR & SURFACES part 的 Visor Methods 部分
  • 在 surface 上创建一个曲面,tfjs-vis 中大多数采用 surface 的方法也采用 SurfaceInfo,因此除非您要进行自定义绘图,否则几乎不需要调用此方法。
  • 参数:
    • options (Object)
      • name (string) 此表面的名称/标签
      • tab (string) 此表面应出现在的选项卡的名称
      • styles (StyleOptions) 显示曲面的样式
  • 返回:{ container: any; label: any; drawArea: any; }
  • 代码示例如下:
tfvis.visor().surface({name: 'Custom Height', tab: 'My Tab', styles: {
    height: 500
}})

tf.tidy (nameOrFn, fn?)

  • API Reference 的 PERFORMANCE part 的 Memory 部分
  • 执行提供的函数 fn,执行完之后,清除 fn 分配的所有中间张量( fn 除外). fn 不得返回 Promise(不允许使用异步功能)。返回的结果可以是一个复杂的对象。使用此方法有助于避免内存泄漏。通常,将对操作的调用包装在 tf.tidy() 中以自动清除内存。
  • 注意:在 tidy() 中时不会清除变量。如果要处理变量,请使用 tf.disposeVariables() 或直接对变量调用 dispose()。
  • 参数:
    • nameOrFn (string | Function) 闭包的名称或要执行的函数。如果提供了名称,则第二个参数应为函数。如果打开了调试模式,将使用提供的名称跟踪并显示该功能的时间和内存使用情况。
    • fn (Function) 要执行的功能。 Optional
  • 示例代码如下:
// y = 2 ^ 2 + 1
const y = tf.tidy(() => {
  // a, b, and one will be cleaned up when the tidy ends.
  const one = tf.scalar(1);
  const a = tf.scalar(2);
  const b = a.square();

  console.log('numTensors (in tidy): ' + tf.memory().numTensors);

  // The value returned inside the tidy function will return
  // through the tidy, in this case to the variable y.
  return b.add(one);
});

console.log('numTensors (outside tidy): ' + tf.memory().numTensors);
y.print();

/*
numTensors (in tidy): 3
numTensors (outside tidy): 1
Tensor
    5
*/

tf.slice (x, begin, size?)

  • API Reference 的 Tensors part 的 Slicing and Joining 部分
  • 从tf.Tensor中提取一个切片,该切片从坐标开始begin ,大小为size。
  • 也可以使用更严格的特定于等级的方法,该方法具有与此方法相同的签名,可以断言x具有给定等级的方法:
    • tf.slice1d
    • tf.slice2d
    • tf.slice3d
    • tf.slice4d
  • 参数:
    • x (tf.Tensor|TypedArray|Array) tf.Tensor 切片的开始位置。
    • begin (number | number []) 起始切片的坐标。该长度可以小于 x 的秩-其余轴将以隐式 0 作为起点。也可以是单个数字,在这种情况下,它指定第一个轴。
    • size (number | number []) 切片的大小。该长度可以小于 x 的秩-其余轴将具有隐式 -1。值 -1 要求轴上其余尺寸。也可以是单个数字,在这种情况下,它指定第一个轴的大小。 可选的
  • 返回:tf.Tensor
  • 示例代码如下:
const x = tf.tensor2d([1, 2, 3, 4], [2, 2]);
x.slice([1, 0], [1, 2]).print();
/*
Tensor
    [[3, 4],]
*/

tf.reshape (newShape)

  • API Reference 的 Tensors part 的 Transformations 部分
  • 将张量重塑为提供的形状。有关更多详细信息,请参见tf.reshape()。
  • 参数:
    • newShape (number []) 定义输出张量形状的整数数组。
      返回值: tf.Tensor

tf.browser.toPixels (img, canvas?)

  • API Reference 的 BROWSER part
  • 将 tf.tensor 像素值绘制到字节数组或画布上。当输入的 dtype 为 ‘float32’ 时,我们假定值在 [0-1] 范围内。否则,当输入为 ‘int32’ 时,我们假定值在 [0-255] 范围内。返回一个将在画布绘制时解析的promise。
  • 参数:
    • img (tf.Tensor2D|tf.Tensor3D|TypedArray|Array) 2或3阶张量。如果为等级2,则绘制灰度。如果为等级3,则深度必须为1、3或4。当深度为1时,绘制灰度。当深度为3时,我们绘制深度尺寸的前三个分量对应于 r,g,b 和 alpha=1。当深度为4时,深度尺寸的所有四个分量对应于 r,g,b,a。
    • canvas (HTMLCanvasElement) 要绘制的画布。 可选的
  • 返回: Promise
  • 示例代码如下:
for (let i = 0; i < 20; i += 1) {
  const imageTensor = tf.tidy(() => {
      return examples.xs
          .slice([i, 0], [1, 784])
          .reshape([28, 28, 1]);
  });

  const canvas = document.createElement('canvas');
  canvas.width = 28;
  canvas.height = 28;
  canvas.style = 'margin: 4px';
  await tf.browser.toPixels(imageTensor, canvas);
  surface.drawArea.appendChild(canvas);
}

tf.layers.conv2d (args)

  • API Reference 的 LAYERS part 的 Convolutional 部分
  • 2D 卷积层(例如图像上的空间卷积)。该层创建一个卷积内核,该卷积内核与该层输入进行卷积以产生输出张量。如果 useBias 为 True,则会创建一个偏差矢量并将其添加到输出中。如果 activation 不是 null,则它也将应用于输出。当将此层用作模型的第一层时,请提供关键字参数 inputShape(整数数组,不包括采样轴),例如:对于 dataFormat=‘channelsLast’ 尺寸为 128x128 RGB 图片的 inputShape=[128, 128, 3] 。
  • 参数:
    • args (Object)
      • filters (number) 输出空间的维数(即卷积中的过滤器数量)
      • kernelSize (number|number[]) 卷积窗口的尺寸。如果 kernelSize 是一个数字,则卷积窗口将为正方形。
      • strides (number|number[]) 在每个维度中卷积的步幅。如果步幅是数字,则两个维度上的步幅相等。指定任何 strides !=1 与指定任何 dilationRate 值 !=1 不兼容
      • padding (‘valid’|‘same’|‘causal’) 填充模式。
      • dataFormat (‘channelsFirst’|‘channelsLast’) 数据的格式,确定输入维度的顺序。
        • channels_last 对应于具有形状的输入 (batch, …, channels)
        • channels_first 对应于形状为的输入(batch, channels, …)。
        • 默认为channels_last。
      • dilationRate (number|[number]|[number, number]|[number, number, number]) 在每个维度上用于膨胀卷积的膨胀率。应该是整数或两个或三个整数的数组。当前,指定任何 dilationRate 值 != 1 与指定任何 strides 值 != 1 不兼容。
      • activation (‘elu’|‘hardSigmoid’|‘linear’|‘relu’|‘relu6’| ‘selu’|‘sigmoid’|‘softmax’|‘softplus’|‘softsign’|‘tanh’) 激活函数层,如果不指定激活函数,则不应用任何激活函数。
      • useBias (boolean) 图层是否使用偏差矢量。默认为true。
      • kernelInitializer (‘constant’|‘glorotNormal’|‘glorotUniform’|‘heNormal’|‘heUniform’|‘identity’| ‘leCunNormal’|‘leCunUniform’|‘ones’|‘orthogonal’|‘randomNormal’| ‘randomUniform’|‘truncatedNormal’|‘varianceScaling’|‘zeros’|string|tf.initializers.Initializer) 卷积核权重矩阵的初始化程序
      • biasInitializer (‘constant’|‘glorotNormal’|‘glorotUniform’|‘heNormal’|‘heUniform’|‘identity’| ‘leCunNormal’|‘leCunUniform’|‘ones’|‘orthogonal’|‘randomNormal’| ‘randomUniform’|‘truncatedNormal’|‘varianceScaling’|‘zeros’|string|tf.initializers.Initializer) 偏置向量的初始化器。
      • kernelConstraint (‘maxNorm’|‘minMaxNorm’|‘nonNeg’|‘unitNorm’|string|tf.constraints.Constraint) 约束卷积核的权重。
      • biasConstraint (‘maxNorm’|‘minMaxNorm’|‘nonNeg’|‘unitNorm’|string|tf.constraints.Constraint) 偏向向量的约束。
      • kernelRegularizer (‘l1l2’|string|Regularizer) 正则化函数应用于内核权重矩阵。
      • biasRegularizer (‘l1l2’|string|Regularizer) 正则化函数应用于偏置向量
      • activityRegularizer (‘l1l2’|string|Regularizer) 正则化函数应用于激活。
      • inputShape ((null | number)[]) 如果已定义,将用于创建要在该层之前插入的输入层。如果 inputShape 和 batchInputShape 同时定义,batchInputShape 将使用。此参数仅适用于输入层(模型的第一层)。
      • batchInputShape ((null | number)[]) 如果已定义,将用于创建要在该层之前插入的输入层。如果 inputShape 和 batchInputShape 同时定义,batchInputShape 将使用。此参数仅适用于输入层(模型的第一层)。
      • batchSize (number) 如果 inputShape 被指定并且 batchInputShape 未被指定,batchSize 被用于构造 batchInputShape:[batchSize, …inputShape]
      • dtype (‘float32’|‘int32’|‘bool’|‘complex64’|‘string’) 此层的数据类型。默认为’float32’。此参数仅适用于输入层(模型的第一层)。
      • name (string) 此层的名称。
      • trainable (boolean) 此层的权重是否可更新fit。默认为true。
      • weights (tf.Tensor[]) 图层的初始权重值。
      • inputDType (‘float32’|‘int32’|‘bool’|‘complex64’|‘string’) 旧版支持。不要用于新代码。
  • 返回: tf.layers.Layer
  • 示例代码如下:
  const model = tf.sequential();
  model.add(tf.layers.conv2d({
      inputShape: [28, 28, 1],
      kernelSize: 5,
      filters: 8,
      strides: 1,
      activation: 'relu',
      kernelInitializer: 'varianceScaling'
  }));

tf.layers.maxPool2d (args)

  • API Reference 的 LAYERS part 的 Pooling 部分
  • 空间数据的最大池化操作
  • 输入形状:
    • 如果dataFormat === CHANNEL_LAST:具有形状的4D张量: [batchSize, rows, cols, channels]
    • 如果dataFormat === CHANNEL_FIRST:具有形状的4D张量: [batchSize, channels, rows, cols]
  • 输出形状:
    • 如果dataFormat=CHANNEL_LAST:具有形状的4D张量: [batchSize, pooleRows, pooledCols, channels]
    • 如果dataFormat=CHANNEL_FIRST:具有形状的4D张量: [batchSize, channels, pooleRows, pooledCols]
  • 参数:
    • args (Object)
      • poolSize (number|[number, number]) 在每个维度[垂直,水平]上要缩小的因子。需要一个整数或2个整数的数组。
        • 例如,[2, 2]将两个维度的输入减半。如果仅指定一个整数,则两个尺寸将使用相同的窗口长度
      • strides (number|[number, number]) 在池化窗口的各个维度中步幅的大小。需要一个整数或2个整数的数组。整数,2个整数的元组或无。如果为 null,则默认为poolSize。
      • padding (‘valid’|‘same’|‘causal’) 用于池化层的填充类型。
      • dataFormat (‘channelsFirst’|‘channelsLast’) 用于池层的数据格式。
      • inputShape ((null | number)[]) 如果已定义,将用于创建要在该层之前插入的输入层。如果 inputShape 和 batchInputShape 同时定义,batchInputShape 将使用。此参数仅适用于输入层(模型的第一层)。
      • batchInputShape ((null | number)[]) 如果已定义,将用于创建要在该层之前插入的输入层。如果 inputShape 和 batchInputShape 同时定义,batchInputShape 将使用。此参数仅适用于输入层(模型的第一层)。
      • batchSize (number) 如果 inputShape 被指定并且 batchInputShape 未被指定,batchSize 被用于构造 batchInputShape:[batchSize, …inputShape]
      • dtype (‘float32’|‘int32’|‘bool’|‘complex64’|‘string’) 此层的数据类型。默认为’float32’。此参数仅适用于输入层(模型的第一层)。
      • name (string) 此层的名称。
      • trainable (boolean) 此层的权重是否可更新fit。默认为true。
      • weights (tf.Tensor[]) 图层的初始权重值。
      • inputDType (‘float32’|‘int32’|‘bool’|‘complex64’|‘string’) 旧版支持。不要用于新代码。
  • 返回: tf.layers.Layer
  • 代码示例如下:
    const model = tf.sequential();
    model.add(tf.layers.conv2d({
        inputShape: [28, 28, 1],
        kernelSize: 5,
        filters: 8,
        strides: 1,
        activation: 'relu',
        kernelInitializer: 'varianceScaling'
    }));
    model.add(tf.layers.maxPool2d({
        poolSize: [2, 2],
        strides: [2, 2]
    }));

tf.layers.flatten (args?)

  • API Reference 的 LAYERS part 的 Basic 部分
  • 展平输入。不影响批量大小。
  • 参数:
    • args (Object) Optional
      • dataFormat (‘channelsFirst’|‘channelsLast’) 用于池层的数据格式。
      • inputShape ((null | number)[]) 如果已定义,将用于创建要在该层之前插入的输入层。如果 inputShape 和 batchInputShape 同时定义,batchInputShape 将使用。此参数仅适用于输入层(模型的第一层)。
      • batchInputShape ((null | number)[]) 如果已定义,将用于创建要在该层之前插入的输入层。如果 inputShape 和 batchInputShape 同时定义,batchInputShape 将使用。此参数仅适用于输入层(模型的第一层)。
      • batchSize (number) 如果 inputShape 被指定并且 batchInputShape 未被指定,batchSize 被用于构造 batchInputShape:[batchSize, …inputShape]
      • dtype (‘float32’|‘int32’|‘bool’|‘complex64’|‘string’) 此层的数据类型。默认为’float32’。此参数仅适用于输入层(模型的第一层)。
      • name (string) 此层的名称。
      • trainable (boolean) 此层的权重是否可更新fit。默认为true。
      • weights (tf.Tensor[]) 图层的初始权重值。
      • inputDType (‘float32’|‘int32’|‘bool’|‘complex64’|‘string’) 旧版支持。不要用于新代码。
  • 返回: tf.layers.Layer
 类似资料: