📜  Tensorflow.js tf.layers.maxPooling2d()函数(1)

📅  最后修改于: 2023-12-03 15:20:35.045000             🧑  作者: Mango

Tensorflow.js tf.layers.maxPooling2d()函数介绍

Tensorflow.js是一款基于浏览器和Node.js的机器学习平台,它提供了许多API和工具,可以方便地构建机器学习模型和应用程序。tf.layers.maxPooling2d()函数是Tensorflow.js中的一个用于构建卷积神经网络中池化层的函数,它可以将输入张量按照指定的大小进行最大池化操作。

函数定义
maxPooling2d(config: MaxPooling2DLayerArgs): Layer;

tf.layers.maxPooling2d()函数接受一个配置对象作为参数,并返回一个Layer类型的实例对象。

该函数的配置对象定义如下:

interface MaxPooling2DLayerArgs extends LayerArgs {
  poolSize?: [number, number];
  strides?: [number, number];
  padding?: PaddingMode;
  dataFormat?: DataFormat;
}

其中,各字段的含义如下:

  • poolSize (optional):一个数值对[height, width],表示池化窗口的大小;默认为[2, 2]
  • strides (optional):一个数值对[vertical, horizontal],表示池化窗口的步长;默认为null,表示和池化窗口大小相同。
  • padding (optional):一个字符串,表示填充方式,可选值为"valid""same""full";默认为"valid"
  • dataFormat (optional):一个字符串,表示输入数据的格式,可选值为"channelsFirst""channelsLast";默认为"channelsLast"
函数用法

下面是一个使用tf.layers.maxPooling2d()函数创建池化层的例子:

import * as tf from '@tensorflow/tfjs';

// 创建一个输入张量(28x28像素,3通道)
const input = tf.input({ shape: [28, 28, 3] });

// 创建一个池化层
const pool = tf.layers.maxPooling2d({
  poolSize: [2, 2],  // 池化窗口大小为2x2
  strides: [2, 2],   // 步长为2x2
  padding: 'same'    // 填充方式为"same"
});

// 将池化层应用于输入张量
const output = pool.apply(input);

// 创建一个模型
const model = tf.model({ inputs: input, outputs: output });

在上面的例子中,我们首先创建了一个输入张量input,它的形状为[28, 28, 3],表示它是一张28x28像素、3通道的图片。然后,我们使用tf.layers.maxPooling2d()函数创建了一个池化层pool,并设置了池化窗口大小为[2, 2],步长为[2, 2],填充方式为"same"。最后,我们调用pool.apply(input)函数将池化层应用于输入张量,得到输出张量output。最后,我们使用tf.model()函数将输入张量和输出张量包装成一个模型model

函数示例

下面是一个演示如何使用tf.layers.maxPooling2d()函数创建池化层的完整示例代码:

import * as tf from '@tensorflow/tfjs';

// 创建一个输入张量(28x28像素,3通道)
const input = tf.input({ shape: [28, 28, 3] });

// 创建一个池化层
const pool = tf.layers.maxPooling2d({
  poolSize: [2, 2],  // 池化窗口大小为2x2
  strides: [2, 2],   // 步长为2x2
  padding: 'same'    // 填充方式为"same"
});

// 将池化层应用于输入张量
const output = pool.apply(input);

// 创建一个模型
const model = tf.model({ inputs: input, outputs: output });

// 打印模型的摘要
model.summary();

执行上述代码,将会输出如下的模型摘要:

_________________________________________________________________
Layer (type)                 Output shape              Param #
=================================================================
input_1 (InputLayer)         [(null, 28, 28, 3)]       0
_________________________________________________________________
max_pooling2d_1 (MaxPooling (null, 14, 14, 3)         0
=================================================================
Total params: 0
Trainable params: 0
Non-trainable params: 0
_________________________________________________________________