com.microsoft - Pad#
Pad - 1#
Version
name: Pad (GitHub)
domain: com.microsoft
since_version: 1
function:
support_level: SupportType.COMMON
shape inference: True
This version of the operator has been available since version 1 of domain com.microsoft.
Summary
Attributes
mode - STRING : Three modes: constant`(default) - pads with a given constant value, `reflect - pads with the reflection of the vector mirrored on the first and last values of the vector along each axis, edge - pads with the edge values of array
Inputs
Between 2 and 3 inputs.
data (heterogeneous) - T:
pads (heterogeneous) - tensor(int64):
value (optional, heterogeneous) - T:
Outputs
output (heterogeneous) - T:
Type Constraints
T in ( tensor(double), tensor(float), tensor(float16) ): Constrain input and output types to float tensors.
Examples
_constant_pad
import numpy as np
import onnx
node = onnx.helper.make_node(
"Pad", inputs=["x", "pads", "value"], outputs=["y"], mode="constant"
)
x = np.random.randn(1, 3, 4, 5).astype(np.float32)
pads = np.array([0, 0, 1, 3, 0, 0, 2, 4]).astype(
np.int64
) # pad order [x1_begin, x2_begin, ..., x1_end, x2_end, ...]
value = np.float32(1.2)
y = pad_impl(x, pads, "constant", 1.2)
expect(node, inputs=[x, pads, value], outputs=[y], name="test_constant_pad")
_reflection_edge_and_wrap_pad
import numpy as np
import onnx
for mode in ["edge", "reflect", "wrap"]:
node = onnx.helper.make_node(
"Pad", inputs=["x", "pads"], outputs=["y"], mode=mode
)
x = np.random.randn(1, 3, 4, 5).astype(np.int32)
pads = np.array([0, 0, 1, 1, 0, 0, 1, 1]).astype(
np.int64
) # pad order [x1_begin, x2_begin, ..., x1_end, x2_end, ...]
y = pad_impl(x, pads, mode)
expect(node, inputs=[x, pads], outputs=[y], name=f"test_{mode}_pad")
_constant_pad_axes
import numpy as np
import onnx
node = onnx.helper.make_node(
"Pad", inputs=["x", "pads", "value", "axes"], outputs=["y"], mode="constant"
)
x = np.random.randn(1, 3, 4, 5).astype(np.float32)
pads = np.array([0, 3, 0, 4]).astype(
np.int64
) # pad order [x1_begin, x2_begin, ..., x1_end, x2_end, ...]
value = np.float32(1.2)
axes = np.array([1, 3], dtype=np.int64)
y = pad_impl(
x,
pads,
"constant",
1.2,
[1, 3],
)
expect(
node,
inputs=[x, pads, value, axes],
outputs=[y],
name="test_constant_pad_axes",
)