jax.scipy.signal.correlate2d

内容

jax.scipy.signal.correlate2d#

jax.scipy.signal.correlate2d(in1, in2, mode='full', boundary='fill', fillvalue=0, precision=None)[source]#

两个二维数组的互相关。

JAX 实现 scipy.signal.correlate2d()

参数:
  • in1 (Array) – 互相关的左侧输入。必须有 in1.ndim == 2

  • in2 (Array) – 互相关的右侧输入。必须有 in2.ndim == 2

  • mode (str) –

    控制输出的大小。可用的操作是

    • "full": (默认) 输出输入的完整互相关。

    • "same":返回"full"输出的中心部分,其大小与in1相同。

    • "valid":返回"full"输出中不依赖于数组边缘填充的部分。

  • boundary (str) – 仅支持"fill"

  • fillvalue (float) – 仅支持0

  • method

    控制计算方法。选项包括:

    • "auto": (默认) 始终使用"direct"方法。

    • "direct":降低到jax.lax.conv_general_dilated()

    • "fft":通过快速傅里叶变换计算结果。

  • precision (PrecisionLike | None) – 指定计算的精度。有关可用值的说明,请参阅jax.lax.Precision

返回:

包含互相关结果的数组。

返回类型:

数组

另请参阅

示例

一些二维相关示例

>>> x = jnp.array([[2, 1, 3],
...                [1, 3, 1],
...                [4, 1, 2]])
>>> y = jnp.array([[1, 3],
...                [4, 2]])

完整的二维相关使用边缘处的隐式零填充

>>> jax.scipy.signal.correlate2d(x, y, mode='full')
Array([[ 4., 10., 10., 12.],
       [ 8., 15., 24.,  7.],
       [11., 28., 14.,  9.],
       [12.,  7.,  7.,  2.]], dtype=float32)

指定mode = 'same'将返回与第一个输入大小相同的二维相关的中心部分

>>> jax.scipy.signal.correlate2d(x, y, mode='same')
Array([[15., 24.,  7.],
       [28., 14.,  9.],
       [ 7.,  7.,  2.]], dtype=float32)

指定mode = 'valid'仅返回两个数组完全重叠的二维相关部分

>>> jax.scipy.signal.correlate2d(x, y, mode='valid')
Array([[15., 24.],
       [28., 14.]], dtype=float32)