mirror of
https://github.com/saymrwulf/pytorch.git
synced 2026-05-14 20:57:59 +00:00
Summary: Pull Request resolved: https://github.com/pytorch/pytorch/pull/49980 From ``` ./python/libcst/libcst codemod remove_unused_imports.RemoveUnusedImportsWithGlean --no-format caffe2/ ``` Test Plan: Standard sandcastle tests Reviewed By: xush6528 Differential Revision: D25727359 fbshipit-source-id: c4f60005b10546423dc093d31d46deb418352286
130 lines
4.3 KiB
Python
130 lines
4.3 KiB
Python
|
|
|
|
|
|
|
|
|
|
from caffe2.python import core, workspace
|
|
import caffe2.python.hypothesis_test_util as hu
|
|
import numpy as np
|
|
|
|
|
|
class TestPercentileOp(hu.HypothesisTestCase):
|
|
def _test_percentile_op(
|
|
self,
|
|
original_inp,
|
|
value_to_pct_map,
|
|
dist_lengths,
|
|
expected_values
|
|
):
|
|
op = core.CreateOperator(
|
|
'Percentile',
|
|
['original_values', 'value_to_pct_map', 'dist_lengths'],
|
|
['percentile_values']
|
|
)
|
|
workspace.FeedBlob('original_values', np.array(
|
|
original_inp, dtype=np.float32))
|
|
workspace.FeedBlob(
|
|
'value_to_pct_map', np.array(value_to_pct_map, dtype=np.float32))
|
|
workspace.FeedBlob('dist_lengths', np.array(
|
|
dist_lengths, dtype=np.int32))
|
|
workspace.RunOperatorOnce(op)
|
|
np.testing.assert_array_almost_equal(
|
|
workspace.FetchBlob('percentile_values'),
|
|
np.array(expected_values),
|
|
decimal=5
|
|
)
|
|
self._test_shape_inference(
|
|
original_inp,
|
|
value_to_pct_map,
|
|
dist_lengths,
|
|
expected_values
|
|
)
|
|
|
|
def _test_shape_inference(
|
|
self,
|
|
original_inp,
|
|
value_to_pct_map,
|
|
dist_lengths,
|
|
expected_values
|
|
):
|
|
net = core.Net('test_shape_inference')
|
|
result = net.Percentile(
|
|
['original_values', 'value_to_pct_map', 'dist_lengths'],
|
|
['percentile_values']
|
|
)
|
|
workspace.FeedBlob('original_values', np.array(
|
|
original_inp, dtype=np.float32))
|
|
workspace.FeedBlob(
|
|
'value_to_pct_map', np.array(value_to_pct_map, dtype=np.float32))
|
|
workspace.FeedBlob('dist_lengths', np.array(
|
|
dist_lengths, dtype=np.int32))
|
|
(shapes, types) = workspace.InferShapesAndTypes([net])
|
|
workspace.RunNetOnce(net)
|
|
self.assertEqual(shapes[result], list(workspace.blobs[result].shape))
|
|
self.assertEqual(shapes[result], list(workspace.blobs['original_values'].shape))
|
|
self.assertEqual(types[result], core.DataType.FLOAT)
|
|
|
|
def test_percentile_op_with_only_one_dist(self):
|
|
self._test_percentile_op(
|
|
original_inp=[[5]],
|
|
value_to_pct_map=[[5, 0.4]],
|
|
dist_lengths=[1],
|
|
expected_values=[[0.4]]
|
|
)
|
|
|
|
def test_percentile_op_with_all_elements_in_map(self):
|
|
self._test_percentile_op(
|
|
original_inp=[[3, 4], [10, 4]],
|
|
value_to_pct_map=[[3, 0.3], [4, 0.6],
|
|
[10, 0.8], [4, 0.5], [5, 0.6]],
|
|
dist_lengths=[3, 2],
|
|
expected_values=[[0.3, 0.5], [0.8, 0.5]],
|
|
)
|
|
|
|
def test_percentile_op_with_same_value(self):
|
|
self._test_percentile_op(
|
|
original_inp=[[1, 1], [1, 2]],
|
|
value_to_pct_map=[[1, 0.1], [4, 0.4], [2, 0.5]],
|
|
dist_lengths=[2, 1],
|
|
expected_values=[[0.1, 0.0], [0.1, 0.5]]
|
|
)
|
|
|
|
def test_percentile_op_with_elements_bigger_than_map_range(self):
|
|
self._test_percentile_op(
|
|
original_inp=[[1, 5], [3, 4]],
|
|
value_to_pct_map=[[1, 0.1], [4, 0.4], [2, 0.1], [3, 0.3]],
|
|
dist_lengths=[2, 2],
|
|
expected_values=[[0.1, 1.], [0.3, 1.0]]
|
|
)
|
|
|
|
def test_percentile_op_with_elements_smaller_than_map_range(self):
|
|
self._test_percentile_op(
|
|
original_inp=[[1], [5], [6]],
|
|
value_to_pct_map=[[2, 0.2], [5, 0.5], [7, 0.5]],
|
|
dist_lengths=[3],
|
|
expected_values=[[0.0], [0.5], [0.5]]
|
|
)
|
|
|
|
def test_percentile_op_with_interpolation(self):
|
|
self._test_percentile_op(
|
|
original_inp=[[3, 2, 5], [6, 7, 8]],
|
|
value_to_pct_map=[[1, 0.1], [4, 0.7], [4.5, 0.8],
|
|
[6, 0.5], [8, 0.9],
|
|
[8, 0.6]],
|
|
dist_lengths=[3, 2, 1],
|
|
expected_values=[[0.5, 0.0, 0.0], [1.0, 0.7, 0.6]]
|
|
)
|
|
|
|
def test_percentile_op_with_large_sample_size_per_dist(self):
|
|
self._test_percentile_op(
|
|
original_inp=[[3, 1], [5, 7]],
|
|
value_to_pct_map=[[3, 0.5], [4, 0.6], [5, 0.7],
|
|
[1, 0.2], [2, 0.3], [5, 0.8]],
|
|
dist_lengths=[3, 3],
|
|
expected_values=[[0.5, 0.2], [0.7, 1.0]]
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
import unittest
|
|
unittest.main()
|