     _ x: Tensor<Scalar>,
     input: Tensor<Scalar>,
     filterSizes: Tensor<Int32>,
-    strides: (Int, Int, Int, Int),
-    padding: Padding,
+    strides: (Int, Int, Int, Int) = (1, 1, 1, 1),
+    padding: Padding = .valid,
     dilations: (Int, Int, Int, Int) = (1, 1, 1, 1)
 ) -> Tensor<Scalar> {
     return Raw.conv2DBackpropFilter(

    _ x: Tensor<Scalar>,
    input: Tensor<Scalar>,
    filterSizes: Tensor<Int32>,
    strides: (Int, Int, Int, Int, Int),
    padding: Padding
) -> Tensor<Scalar> {
    return Raw.conv3DBackpropFilterV2(
        x,

public func conv3D<Scalar: TensorFlowFloatingPoint>(
    _ input: Tensor<Scalar>,
    filter: Tensor<Scalar>,
    strides: (Int, Int, Int, Int, Int) = (1, 1, 1, 1, 1),
    padding: Padding = .valid
) -> Tensor<Scalar> {
    return Raw.conv3D(
        input,
