jax.numpy.convolve#

jax.numpy.convolve(a, v, mode='full', *, precision=None, preferred_element_type=None)[原始碼]#

兩個一維陣列的卷積。

JAX 版本的 numpy.convolve()

一維陣列的卷積定義為

\[c_k = \sum_j a_{k - j} v_j\]
參數:
  • a (ArrayLike) – 卷積的左手邊輸入。必須有 a.ndim == 1

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

  • mode (str) –

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

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

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

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

  • precision (PrecisionLike) – 指定計算的精確度。請參閱 jax.lax.Precision 以取得可用值的說明。

  • preferred_element_type (DTypeLike | None) – 一種資料類型,指示將結果累積到該資料類型並傳回該資料類型的結果。預設值為 None,表示輸入類型的預設累積類型。

傳回:

包含卷積結果的陣列。

傳回類型:

陣列

另請參閱

範例

一些 1D 卷積範例

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

jax.numpy.convolve,預設情況下,傳回使用隱含零填充邊緣的完整卷積

>>> jnp.convolve(x, y)
Array([ 4.,  9., 16., 15., 12.,  5.,  2.], dtype=float32)

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

>>> jnp.convolve(x, y, mode='same')
Array([ 9., 16., 15., 12.,  5.], dtype=float32)

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

>>> jnp.convolve(x, y, mode='valid')
Array([16., 15., 12.], dtype=float32)

對於複數值輸入

>>> x1 = jnp.array([3+1j, 2, 4-3j])
>>> y1 = jnp.array([1, 2-3j, 4+5j])
>>> jnp.convolve(x1, y1)
Array([ 3. +1.j, 11. -7.j, 15.+10.j,  7. -8.j, 31. +8.j], dtype=complex64)