jax.scipy.signal.fftconvolve#

jax.scipy.signal.fftconvolve(in1, in2, mode='full', axes=None)[原始碼]#

使用快速傅立葉轉換 (FFT) 卷積兩個 N 維陣列。

JAX 實作的 scipy.signal.fftconvolve()

參數:
  • in1 (ArrayLike) – 卷積的左手邊輸入。

  • in2 (ArrayLike) – 卷積的右手邊輸入。必須具有 in1.ndim == in2.ndim

  • mode (str) –

    控制輸出的尺寸。可用的操作為

    • "full": (預設) 輸出輸入的完整卷積。

    • "same": 傳回 "full" 輸出的中心部分,其尺寸與 in1 相同。

    • "valid": 傳回 "full" 輸出中不依賴陣列邊緣填充的部分。

  • axes (Sequence[int] | None | None) – 沿著應用卷積的可選軸序列。

傳回:

包含卷積結果的陣列。

傳回類型:

陣列

另請參閱

範例

一些 1 維卷積範例。由於基於 FFT 的卷積是近似值,因此我們在下方使用 jax.numpy.printoptions() 來調整列印精度

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

完整卷積在邊緣使用隱含零填充

>>> with jax.numpy.printoptions(precision=3):
...   print(jax.scipy.signal.fftconvolve(x, y, mode='full'))
[1. 3. 6. 7. 6. 3. 1.]

指定 mode = 'same' 傳回與第一個輸入尺寸相同的中心卷積

>>> with jax.numpy.printoptions(precision=3):
...   print(jax.scipy.signal.fftconvolve(x, y, mode='same'))
[3. 6. 7. 6. 3.]

指定 mode = 'valid' 僅傳回兩個陣列完全重疊的部分

>>> with jax.numpy.printoptions(precision=3):
...   print(jax.scipy.signal.fftconvolve(x, y, mode='valid'))
[6. 7. 6.]