jax.lax.conv_general_dilated_local#

jax.lax.conv_general_dilated_local(lhs, rhs, window_strides, padding, filter_shape, lhs_dilation=None, rhs_dilation=None, dimension_numbers=None, precision=None)[源代码]#

带有可选空洞的通用n维非共享卷积运算符。

也称为局部连接层,该操作等效于在每个输出空间位置使用单独(非共享)的rhs内核进行卷积。以下文档字符串改编自 jax.lax.conv_general_dilated

参数:
  • lhs (ArrayLike) – 一个秩为 n+2 的输入数组。

  • rhs (ArrayLike) – 一个秩为 n+2 的内核权重数组。与常规 CNN 不同,它的空间坐标(HW、…)对应于输出空间位置,而输入空间位置与单个 I 维度中的输入通道位置融合,顺序为 “C” + ‘’.join(c for c in rhs_spec if c not in ‘OI’),其中 rhs_spec = dimension_numbers[1]。 例如,如果 rhs_spec == “WHIO”,则展开的内核形状为 `”[输出 W][输出 H]{I[感受窗口 W][感受窗口 H]}O”`。

  • window_strides (Sequence[int]) – 一个包含 n 个整数的序列,表示窗口之间的步长。

  • padding (str | Sequence[tuple[int, int]]) – 可以是字符串 ‘SAME’、字符串 ‘VALID’,或一个包含 n(low, high) 整数对的序列,表示在每个空间维度之前和之后应用的填充。

  • filter_shape (Sequence[int]) – 一个包含 n 个整数的序列,表示 rhs_spec = dimension_numbers[1] 中指定的顺序的感受窗口空间形状。

  • lhs_dilation (Sequence[int] | None | None) – None,或一个包含 n 个整数的序列,给出在 lhs 的每个空间维度中应用的空洞因子。LHS 空洞也称为转置卷积。

  • rhs_dilation (Sequence[int] | None | None) – None,或一个包含 n 个整数的序列,给出在 rhs 的每个输入空间维度中应用的空洞因子。RHS 空洞也称为空洞卷积。

  • dimension_numbers (convolution.ConvGeneralDilatedDimensionNumbers | None | None) – 可以是 None,一个 ConvDimensionNumbers 对象,或一个 3 元组 (lhs_spec, rhs_spec, out_spec),其中每个元素都是一个长度为 n+2 的字符串。

  • precision (lax.PrecisionLike | None) – 可选。可以是 None,表示后端的默认精度;一个 lax.Precision 枚举值(Precision.DEFAULTPrecision.HIGHPrecision.HIGHEST);或一个包含两个 lax.Precision 枚举值的元组,表示 lhs`rhs 的精度。

返回:

包含非共享卷积结果的数组。

返回类型:

Array

dimension_numbers 的字符串情况下,每个字符按位置标识

  • lhsrhs 中的批次维度和输出,使用字符 'N',

  • lhs 中的特征维度和输出,使用字符 'C',

  • rhs 中的输入和输出特征维度,分别使用字符 'I' 和 'O',以及

  • 使用任何不同的字符,表示 lhsrhs 和输出之间的空间维度对应关系。 以下示例使用 'W' 和 'H'。

例如,要表示与具有两个空间维度的 conv 函数一致的维度编号,可以使用 (‘NCHW’, ‘OIHW’, ‘NCHW’)。再举一个例子,要表示与 TensorFlow Conv2D 操作一致的维度编号,可以使用 (‘NHWC’, ‘HWIO’, ‘NHWC’)。当使用后一种形式的卷积维度规范时,窗口步长根据标签在 rhs_spec 字符串中出现的顺序与空间维度字符标签关联,因此 window_strides[0]rhs_spec 中第一个不是 ‘I’‘O’ 的字符对应的维度匹配。

如果 dimension_numbersNone,则默认为 (‘NCHW’, ‘OIHW’, ‘NCHW’)(对于 2D 卷积)。