Se usó la API de Cloud Translation para traducir esta página.
Switch to English

tf.nn.depthwise_conv2d

TensorFlow 1 versión Ver código fuente en GitHub

Profundidad para dar lugar 2-D convolución.

Dado un tensor de entrada 4D ( 'NHWC' o 'NCHW' formatos de datos) y un tensor filtro de forma [filter_height, filter_width, in_channels, channel_multiplier] que contiene in_channels filtros convolucionales de profundidad 1, depthwise_conv2d aplica un filtro diferente para cada canal de entrada (expansión de 1 canal para channel_multiplier canales para cada uno), a continuación, concatena los resultados juntos. La salida tiene in_channels * channel_multiplier canales.

En detalle, con el formato predeterminado NHWC,

 output[b, i, j, k * channel_multiplier + q] = sum_{di, dj}
     filter[di, dj, k, q] * input[b, strides[1] * i + rate[0] * di,
                                     strides[2] * j + rate[1] * dj, k]
 

Debe tener strides[0] = strides[3] = 1 . Para el caso más común de los mismos pasos horizontales y verticales, strides = [1, stride, stride, 1] . Si algún valor de rate es mayor que 1, se realiza la convolución profundidad para dar lugar Atrous, en cuyo caso todos los valores en los strides tensor debe ser igual a 1.

Ejemplo de uso:

x = np.array([
    [1., 2.],
    [3., 4.],
    [5., 6.]
], dtype=np.float32).reshape((1, 3, 2, 1))
kernel = np.array([
    [1., 2.],
    [3., 4]
], dtype=np.float32).reshape((2, 1, 1, 2))
tf.nn.depthwise_conv2d(x, kernel, strides=[1, 1, 1, 1],
                       padding='VALID').numpy()
  array([[[[10., 14.],
           [14., 20.]],
          [[18., 26.],
           [22., 32.]]]], dtype=float32)
tf.nn.depthwise_conv2d(x, kernel, strides=[1, 1, 1, 1],
                       padding=[[0, 0], [1, 0], [1, 0], [0, 0]]).numpy()
  array([[[[ 0.,  0.],
           [ 3.,  4.],
           [ 6.,  8.]],
          [[ 0.,  0.],
           [10., 14.],
           [14., 20.]],
          [[ 0.,  0.],
           [18., 26.],
           [22., 32.]]]], dtype=float32)

input 4-D con forma de acuerdo con data_format .
filter 4-D con forma [filter_height, filter_width, in_channels, channel_multiplier] .
strides 1-D de tamaño 4. El paso de la ventana deslizante para cada dimensión de input .
padding Controles de cómo rellenar la imagen antes de aplicar la convolución. Puede ser la cadena "SAME" o "VALID" que indica el tipo de algoritmo de relleno para su uso, o una lista que indica los rellenos explícitas al principio y al final de cada dimensión. Cuando se utiliza el relleno explícita y data_format es "NHWC" , esto debería estar en la forma [[0, 0], [pad_top, pad_bottom], [pad_left, pad_right], [0, 0]] . Cuando el relleno explícita utiliza y data_format es "NCHW" , esto debería estar en la forma [[0, 0], [0, 0], [pad_top, pad_bottom], [pad_left, pad_right]] .
data_format El formato de datos para la entrada. Ya sea "NHWC" (por defecto) o "NCHW".
dilations 1-D de tamaño 2. La tasa de dilatación en la que los valores de entrada de la muestra a través de la height y width las dimensiones en convolución Atrous. Si es mayor que 1, entonces todos los valores de pasos debe ser 1.
name Un nombre para esta operación (opcional).

A 4-D Tensor con forma de acuerdo con data_format . Por ejemplo, para el formato "NHWC", es la forma [batch, out_height, out_width, in_channels * channel_multiplier].