MCPcopy Create free account
hub / github.com/alibaba/zvec / TEST

Function TEST

tests/ailego/algorithm/integer_quantizer_test.cc:22–58  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

20namespace zvec::ailego {
21
22TEST(IntegerQuantizer, INT8_Uniform_Distribution) {
23 std::vector<size_t> tests = {1, 100, 1000, 10000, 100000};
24 for (auto COUNT : tests) {
25 std::random_device rd;
26 std::mt19937 gen(rd());
27 std::vector<float> data;
28
29 std::uniform_real_distribution<float> dist(1.0, 2.0);
30 float max = -std::numeric_limits<float>::max();
31 float min = std::numeric_limits<float>::max();
32 for (size_t i = 0; i < COUNT; ++i) {
33 auto v = dist(gen);
34 max = std::max(max, v);
35 min = std::min(min, v);
36 data.emplace_back(v);
37 }
38 // data.emplace_back(10); // deviation point
39 EntropyInt8Quantizer quantizer;
40 quantizer.set_max(max);
41 quantizer.set_min(min);
42 quantizer.feed(data.data(), data.size());
43
44 ASSERT_TRUE(quantizer.train());
45
46 std::vector<int8_t> qdata(data.size(), 0);
47 quantizer.encode(data.data(), qdata.size(), qdata.data());
48
49 std::vector<float> recover_data(data.size(), 0.0f);
50 quantizer.decode(qdata.data(), qdata.size(), recover_data.data());
51
52 float var = 0.0f;
53 for (size_t i = 0; i < data.size(); ++i) {
54 var += (data[i] - recover_data[i]) * (data[i] - recover_data[i]);
55 }
56 EXPECT_LT(var / COUNT, 0.01);
57 }
58}
59
60TEST(IntegerQuantizer, INT8_Normal_Distribution) {
61 const size_t COUNT = 1000000u;

Callers

nothing calls this directly

Calls 12

set_maxMethod · 0.80
set_minMethod · 0.80
set_non_biasMethod · 0.80
biasMethod · 0.80
feedMethod · 0.45
dataMethod · 0.45
sizeMethod · 0.45
trainMethod · 0.45
encodeMethod · 0.45
decodeMethod · 0.45
beginMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected