| |
|
| |
|
| |
|
| |
|
| |
|
| | import unittest |
| | import hypothesis.strategies as st |
| | from hypothesis import given, settings |
| | import numpy as np |
| | from caffe2.python import core, workspace |
| | import caffe2.python.hypothesis_test_util as hu |
| | import caffe2.python.ideep_test_util as mu |
| |
|
| | @unittest.skipIf(not workspace.C.use_mkldnn, "No MKLDNN support.") |
| | class TransposeTest(hu.HypothesisTestCase): |
| | @given( |
| | X=hu.tensor(min_dim=1, max_dim=5, dtype=np.float32), use_axes=st.booleans(), **mu.gcs) |
| | @settings(deadline=None, max_examples=50) |
| | def test_transpose(self, X, use_axes, gc, dc): |
| | ndim = len(X.shape) |
| | axes = np.arange(ndim) |
| | np.random.shuffle(axes) |
| |
|
| | if use_axes: |
| | op = core.CreateOperator( |
| | "Transpose", ["X"], ["Y"], axes=axes, device_option=gc) |
| | else: |
| | op = core.CreateOperator( |
| | "Transpose", ["X"], ["Y"], device_option=gc) |
| |
|
| | def transpose_ref(X): |
| | if use_axes: |
| | return [np.transpose(X, axes=axes)] |
| | else: |
| | return [np.transpose(X)] |
| |
|
| | self.assertReferenceChecks(gc, op, [X], transpose_ref) |
| | self.assertDeviceChecks(dc, op, [X], [0]) |
| | self.assertGradientChecks(gc, op, [X], 0, [0]) |
| |
|
| |
|
| | if __name__ == "__main__": |
| | unittest.main() |
| |
|