import unittest import caffe2.python.hypothesis_test_util as hu import hypothesis.strategies as st import numpy as np from caffe2.python import core, dyndep from hypothesis import given, settings dyndep.InitOpsLibrary("@/caffe2/modules/detectron:detectron_ops") class TestUpsampleNearestOp(hu.HypothesisTestCase): @given( N=st.integers(1, 3), H=st.integers(10, 300), W=st.integers(10, 300), scale=st.integers(1, 3), **hu.gcs, ) @settings(deadline=None, max_examples=20) def test_upsample_nearest_op(self, N, H, W, scale, gc, dc): C = 32 X = np.random.randn(N, C, H, W).astype(np.float32) op = core.CreateOperator("UpsampleNearest", ["X"], ["Y"], scale=scale) def ref(X): outH = H * scale outW = W * scale outH_idxs, outW_idxs = np.meshgrid( np.arange(outH), np.arange(outW), indexing="ij" ) inH_idxs = (outH_idxs / scale).astype(np.int32) inW_idxs = (outW_idxs / scale).astype(np.int32) Y = X[:, :, inH_idxs, inW_idxs] return [Y] self.assertReferenceChecks(device_option=gc, op=op, inputs=[X], reference=ref) if __name__ == "__main__": unittest.main()