diff --git a/docs/Operators.md b/docs/Operators.md index c7d77831788..fcd2e980515 100644 --- a/docs/Operators.md +++ b/docs/Operators.md @@ -6298,6 +6298,52 @@ opset_import { +#### Examples + +
+all_permutations + +```python +shape = (2,3,4) +data = np.random.random_sample(shape).astype(np.float32) +permutations = list(itertools.permutations(np.arange(len(shape)))) + +for i in range(len(permutations)): + node = onnx.helper.make_node( + 'Transpose', + inputs=['data'], + outputs=['transposed'], + perm=permutations[i] + ) + transposed = np.transpose(data, permutations[i]) + expect(node, inputs=[data], outputs=[transposed], + name='test_transpose_all_permutations_' + str(i)) +``` + +
+ + +
+default + +```python +shape = (2, 3, 4) +data = np.random.random_sample(shape).astype(np.float32) + +node = onnx.helper.make_node( + 'Transpose', + inputs=['data'], + outputs=['transposed'] +) + +transposed = np.transpose(data) +expect(node, inputs=[data], outputs=[transposed], + name='test_transpose_default') +``` + +
+ + ### **Unsqueeze** Insert single-dimensional entries to the shape of a tensor. diff --git a/onnx/backend/test/case/node/transpose.py b/onnx/backend/test/case/node/transpose.py new file mode 100644 index 00000000000..f571db4353d --- /dev/null +++ b/onnx/backend/test/case/node/transpose.py @@ -0,0 +1,46 @@ +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function +from __future__ import unicode_literals + +import numpy as np +import itertools + +import onnx +from ..base import Base +from . import expect + + +class Transpose(Base): + + @staticmethod + def export_default(): + shape = (2, 3, 4) + data = np.random.random_sample(shape).astype(np.float32) + + node = onnx.helper.make_node( + 'Transpose', + inputs=['data'], + outputs=['transposed'] + ) + + transposed = np.transpose(data) + expect(node, inputs=[data], outputs=[transposed], + name='test_transpose_default') + + @staticmethod + def export_all_permutations(): + shape = (2,3,4) + data = np.random.random_sample(shape).astype(np.float32) + permutations = list(itertools.permutations(np.arange(len(shape)))) + + for i in range(len(permutations)): + node = onnx.helper.make_node( + 'Transpose', + inputs=['data'], + outputs=['transposed'], + perm=permutations[i] + ) + transposed = np.transpose(data, permutations[i]) + expect(node, inputs=[data], outputs=[transposed], + name='test_transpose_all_permutations_' + str(i)) diff --git a/onnx/backend/test/data/node/test_transpose_all_permutations_0/input_0.pb b/onnx/backend/test/data/node/test_transpose_all_permutations_0/input_0.pb new file mode 100644 index 00000000000..d80707af3f8 --- /dev/null +++ b/onnx/backend/test/data/node/test_transpose_all_permutations_0/input_0.pb @@ -0,0 +1 @@ +BdataJ`  ?¦7?³N?w} ?HéØ>QY%?n à>~®J?¨e?^k?çól?Z{‘=Ùp²= ¡¥<“&U?H5G?¹^?»†z?¨•L?Gì>ÃÐG? \ No newline at end of file diff --git a/onnx/backend/test/data/node/test_transpose_all_permutations_0/node.pb b/onnx/backend/test/data/node/test_transpose_all_permutations_0/node.pb new file mode 100644 index 00000000000..27624339c5b Binary files /dev/null and b/onnx/backend/test/data/node/test_transpose_all_permutations_0/node.pb differ diff --git a/onnx/backend/test/data/node/test_transpose_all_permutations_0/output_0.pb b/onnx/backend/test/data/node/test_transpose_all_permutations_0/output_0.pb new file mode 100644 index 00000000000..36a37a6fe8b --- /dev/null +++ b/onnx/backend/test/data/node/test_transpose_all_permutations_0/output_0.pb @@ -0,0 +1,2 @@ +B +transposedJ`  ?¦7?³N?w} ?HéØ>QY%?n à>~®J?¨e?^k?çól?Z{‘=Ùp²= ¡¥<“&U?H5G?¹^?»†z?¨•L?Gì>ÃÐG? \ No newline at end of file diff --git a/onnx/backend/test/data/node/test_transpose_all_permutations_1/input_0.pb b/onnx/backend/test/data/node/test_transpose_all_permutations_1/input_0.pb new file mode 100644 index 00000000000..d80707af3f8 --- /dev/null +++ b/onnx/backend/test/data/node/test_transpose_all_permutations_1/input_0.pb @@ -0,0 +1 @@ +BdataJ`  ?¦7?³N?w} ?HéØ>QY%?n à>~®J?¨e?^k?çól?Z{‘=Ùp²= ¡¥<“&U?H5G?¹^?»†z?¨•L?Gì>ÃÐG? \ No newline at end of file diff --git a/onnx/backend/test/data/node/test_transpose_all_permutations_1/node.pb b/onnx/backend/test/data/node/test_transpose_all_permutations_1/node.pb new file mode 100644 index 00000000000..2f1758a8c87 Binary files /dev/null and b/onnx/backend/test/data/node/test_transpose_all_permutations_1/node.pb differ diff --git a/onnx/backend/test/data/node/test_transpose_all_permutations_1/output_0.pb b/onnx/backend/test/data/node/test_transpose_all_permutations_1/output_0.pb new file mode 100644 index 00000000000..6c4bed4b5b9 --- /dev/null +++ b/onnx/backend/test/data/node/test_transpose_all_permutations_1/output_0.pb @@ -0,0 +1,2 @@ +B +transposedJ`  ?HéØ>š²v?¦7?QY%?rRÄ>³N?n à>~®J?w} ?Ùp²=¹^?ÃÐG? \ No newline at end of file diff --git a/onnx/backend/test/data/node/test_transpose_all_permutations_2/input_0.pb b/onnx/backend/test/data/node/test_transpose_all_permutations_2/input_0.pb new file mode 100644 index 00000000000..d80707af3f8 --- /dev/null +++ b/onnx/backend/test/data/node/test_transpose_all_permutations_2/input_0.pb @@ -0,0 +1 @@ +BdataJ`  ?¦7?³N?w} ?HéØ>QY%?n à>~®J?¨e?^k?çól?Z{‘=Ùp²= ¡¥<“&U?H5G?¹^?»†z?¨•L?Gì>ÃÐG? \ No newline at end of file diff --git a/onnx/backend/test/data/node/test_transpose_all_permutations_2/node.pb b/onnx/backend/test/data/node/test_transpose_all_permutations_2/node.pb new file mode 100644 index 00000000000..d24238b4d91 Binary files /dev/null and b/onnx/backend/test/data/node/test_transpose_all_permutations_2/node.pb differ diff --git a/onnx/backend/test/data/node/test_transpose_all_permutations_2/output_0.pb b/onnx/backend/test/data/node/test_transpose_all_permutations_2/output_0.pb new file mode 100644 index 00000000000..931c9d04d75 --- /dev/null +++ b/onnx/backend/test/data/node/test_transpose_all_permutations_2/output_0.pb @@ -0,0 +1,2 @@ +B +transposedJ`  ?¦7?³N?w} ?^k?çól?Z{‘=Ùp²=HéØ>QY%?n à>~®J?¨e?»†z?¨•L?Gì>ÃÐG? \ No newline at end of file diff --git a/onnx/backend/test/data/node/test_transpose_all_permutations_3/input_0.pb b/onnx/backend/test/data/node/test_transpose_all_permutations_3/input_0.pb new file mode 100644 index 00000000000..d80707af3f8 --- /dev/null +++ b/onnx/backend/test/data/node/test_transpose_all_permutations_3/input_0.pb @@ -0,0 +1 @@ +BdataJ`  ?¦7?³N?w} ?HéØ>QY%?n à>~®J?¨e?^k?çól?Z{‘=Ùp²= ¡¥<“&U?H5G?¹^?»†z?¨•L?Gì>ÃÐG? \ No newline at end of file diff --git a/onnx/backend/test/data/node/test_transpose_all_permutations_3/node.pb b/onnx/backend/test/data/node/test_transpose_all_permutations_3/node.pb new file mode 100644 index 00000000000..fbae86f1ed9 Binary files /dev/null and b/onnx/backend/test/data/node/test_transpose_all_permutations_3/node.pb differ diff --git a/onnx/backend/test/data/node/test_transpose_all_permutations_3/output_0.pb b/onnx/backend/test/data/node/test_transpose_all_permutations_3/output_0.pb new file mode 100644 index 00000000000..fcc0cd0dc2e --- /dev/null +++ b/onnx/backend/test/data/node/test_transpose_all_permutations_3/output_0.pb @@ -0,0 +1,2 @@ +B +transposedJ`  ?^k?¦7?çól?³N?Z{‘=w} ?Ùp²=HéØ> ¡¥H5G?¨•L?~®J?Gì>¨e?ÃÐG? \ No newline at end of file diff --git a/onnx/backend/test/data/node/test_transpose_all_permutations_4/input_0.pb b/onnx/backend/test/data/node/test_transpose_all_permutations_4/input_0.pb new file mode 100644 index 00000000000..d80707af3f8 --- /dev/null +++ b/onnx/backend/test/data/node/test_transpose_all_permutations_4/input_0.pb @@ -0,0 +1 @@ +BdataJ`  ?¦7?³N?w} ?HéØ>QY%?n à>~®J?¨e?^k?çól?Z{‘=Ùp²= ¡¥<“&U?H5G?¹^?»†z?¨•L?Gì>ÃÐG? \ No newline at end of file diff --git a/onnx/backend/test/data/node/test_transpose_all_permutations_4/node.pb b/onnx/backend/test/data/node/test_transpose_all_permutations_4/node.pb new file mode 100644 index 00000000000..6d400e2f59b Binary files /dev/null and b/onnx/backend/test/data/node/test_transpose_all_permutations_4/node.pb differ diff --git a/onnx/backend/test/data/node/test_transpose_all_permutations_4/output_0.pb b/onnx/backend/test/data/node/test_transpose_all_permutations_4/output_0.pb new file mode 100644 index 00000000000..c17d014b8d0 --- /dev/null +++ b/onnx/backend/test/data/node/test_transpose_all_permutations_4/output_0.pb @@ -0,0 +1,2 @@ +B +transposedJ`  ?HéØ>š²v?^k? ¡¥<»†z?¦7?QY%?rRÄ>çól?“&U?¨•L?³N?n à>~®J?Z{‘=H5G?Gì>w} ?QY%?n à>~®J?¨e?^k?çól?Z{‘=Ùp²= ¡¥<“&U?H5G?¹^?»†z?¨•L?Gì>ÃÐG? \ No newline at end of file diff --git a/onnx/backend/test/data/node/test_transpose_all_permutations_5/node.pb b/onnx/backend/test/data/node/test_transpose_all_permutations_5/node.pb new file mode 100644 index 00000000000..d600f02e5a8 Binary files /dev/null and b/onnx/backend/test/data/node/test_transpose_all_permutations_5/node.pb differ diff --git a/onnx/backend/test/data/node/test_transpose_all_permutations_5/output_0.pb b/onnx/backend/test/data/node/test_transpose_all_permutations_5/output_0.pb new file mode 100644 index 00000000000..cb9b3bab2e5 --- /dev/null +++ b/onnx/backend/test/data/node/test_transpose_all_permutations_5/output_0.pb @@ -0,0 +1,2 @@ +B +transposedJ`  ?^k?HéØ> ¡¥<š²v?»†z?¦7?çól?QY%?“&U?rRÄ>¨•L?³N?Z{‘=n à>H5G?~®J?Gì>w} ?Ùp²=QY%?n à>~®J?¨e?^k?çól?Z{‘=Ùp²= ¡¥<“&U?H5G?¹^?»†z?¨•L?Gì>ÃÐG? \ No newline at end of file diff --git a/onnx/backend/test/data/node/test_transpose_default/node.pb b/onnx/backend/test/data/node/test_transpose_default/node.pb new file mode 100644 index 00000000000..ab406a8d2c1 --- /dev/null +++ b/onnx/backend/test/data/node/test_transpose_default/node.pb @@ -0,0 +1,3 @@ + +data +transposed" Transpose \ No newline at end of file diff --git a/onnx/backend/test/data/node/test_transpose_default/output_0.pb b/onnx/backend/test/data/node/test_transpose_default/output_0.pb new file mode 100644 index 00000000000..cb9b3bab2e5 --- /dev/null +++ b/onnx/backend/test/data/node/test_transpose_default/output_0.pb @@ -0,0 +1,2 @@ +B +transposedJ`  ?^k?HéØ> ¡¥<š²v?»†z?¦7?çól?QY%?“&U?rRÄ>¨•L?³N?Z{‘=n à>H5G?~®J?Gì>w} ?Ùp²=