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

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

    _ x: Tensor<Scalar>,
    shape: Tensor<Int32>,
    filter: Tensor<Scalar>,
    strides: (Int, Int, Int, Int, Int) = (1, 1, 1, 1, 1),
    padding: Padding = .valid
) -> Tensor<Scalar> {
    return Raw.conv3DBackpropInputV2(
        inputSizes: shape,
