📜  Tensorflow.js tf.depthwiseConv2d()函数

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

Tensorflow.js tf.depthwiseConv2d()函数

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

.depthwiseConv2d()函数用于确定 Depthwise 2D 卷积。

此外,对于给定的 4D 输入数组以及形状为:[filterHeight, filterWidth, inChannels, channelMultiplier] 的过滤器数组,包括深度为 1 的inChannels卷积过滤器,此方法对所有输入通道(扩展为 1通道到每个通道的通道乘数),然后联合连接结果。但是,输出具有 inChannels * channelMultiplier 通道。

句法:

tf.depthwiseConv2d(x, filter, strides, pad, dataFormat?, 
dilations?, dimRoundingMode?)

参数:

  • x:指定的输入张量,其等级为 3 或等级 4,形状为:[batch, height, width, inChannels]。此外,如果等级为 3,则假定批次大小为 1。它可以是 tf.Tensor3D、tf.Tensor4D、TypedArray 或 Array 类型。
  • filter:规定的 4 阶滤波器张量和形状:[filterHeight, filterWidth, inChannels, channelMultiplier]。它可以是 tf.Tensor4D、TypedArray 或 Array 类型。
  • 步幅:卷积的规定步幅:[strideHeight, strideWidth]。如果规定的步幅是一个数字,那么 strideHeight == strideWidth。它可以是 [number, number] 或 number 类型。
  • pad:用于填充的规定类型的算法。它的类型可以是 valid、same、number 或 ExplicitPadding。
    1. 在这里,对于相同的步幅和步长 1,输出将具有与输入相同的大小,而与滤波器大小无关。
    2. 因为,“有效”输出应小于输入,以防过滤器大小大于 1*1×1。
  • dataFormat:来自“NHWC”或“NCHW”的可选字符串。它指定所述输入和输出数据的数据格式。默认值为“NHWC”。而且,这里的数据存储顺序是:[batch, height, width, channels]。它是可选的,可以是“NHWC”或“NCHW”类型,但目前只支持“NHWC”。
  • dilations:规定的膨胀率:[dilationHeight, dilationWidth],因为输入值是在高度和宽度维度上采样的,有利于空洞卷积。默认值为 [1, 1]。此外,如果 rate 是单个数字,则 dilationHeight == dilationWidth。如果它大于 1,那么所有的步幅值都应该是 1。它是可选的并且是 [number, number], number 类型。
  • dimRoundingMode: “ceil”、“round”或“floor”中的指定字符串。如果没有说明,则默认截断。它是可选的,可以是地板、圆形或天花板类型。

返回值:返回 tf.Tensor3D 或 tf.Tensor4D。

示例 1:

Javascript
// Importing the tensorflow.js library
import * as tf from "@tensorflow/tfjs"
  
// Defining input tensor
const x = tf.tensor4d([2, 2, 3, 4], [2, 1, 1, 2]);
  
// Defining filter tensor
const y = tf.tensor4d([2, 1, 4, 4], [1, 1, 2, 2]);
  
// Calling depthwiseConv2d() method
const result = tf.depthwiseConv2d(x, y, 2, 'same');
  
// Printing output
result.print();


Javascript
// Importing the tensorflow.js library
import * as tf from "@tensorflow/tfjs"
  
// Calling depthwiseConv2d() method
tf.tensor4d([2.1, 2.2, 3.4, 4.1], [2, 1, 1, 2]).depthwiseConv2d(
 tf.tensor4d([2.1, 1.2, 4.2, 1.3], [1, 1, 2, 2]), 1, 1,
'NHWC', [1, 1], 'round').print();


输出:

Tensor
    [ [ [[4, 2, 8 , 8 ],]],


      [ [[6, 3, 16, 16],]]]

示例 2:

Javascript

// Importing the tensorflow.js library
import * as tf from "@tensorflow/tfjs"
  
// Calling depthwiseConv2d() method
tf.tensor4d([2.1, 2.2, 3.4, 4.1], [2, 1, 1, 2]).depthwiseConv2d(
 tf.tensor4d([2.1, 1.2, 4.2, 1.3], [1, 1, 2, 2]), 1, 1,
'NHWC', [1, 1], 'round').print();

输出:

Tensor
    [[[[0        , 0        , 0         , 0        ],
       [0        , 0        , 0         , 0        ],
       [0        , 0        , 0         , 0        ]],

      [[0        , 0        , 0         , 0        ],
       [4.4099994, 2.52     , 9.2399998 , 2.8599999],
       [0        , 0        , 0         , 0        ]],

      [[0        , 0        , 0         , 0        ],
       [0        , 0        , 0         , 0        ],
       [0        , 0        , 0         , 0        ]]],


     [[[0        , 0        , 0         , 0        ],
       [0        , 0        , 0         , 0        ],
       [0        , 0        , 0         , 0        ]],

      [[0        , 0        , 0         , 0        ],
       [7.1399999, 4.0800004, 17.2199993, 5.3299994],
       [0        , 0        , 0         , 0        ]],

      [[0        , 0        , 0         , 0        ],
       [0        , 0        , 0         , 0        ],
       [0        , 0        , 0         , 0        ]]]]

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