MCPcopy Create free account
hub / github.com/DeepRec-AI/DeepRec / TestPicker

Function TestPicker

tensorflow/core/lib/random/weighted_picker_test.cc:121–181  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

119}
120
121static void TestPicker(SimplePhilox* rnd, int size) {
122 VLOG(0) << "======= Testing size " << size;
123
124 // Check that empty picker returns -1
125 {
126 WeightedPicker picker(size);
127 picker.SetAllWeights(0);
128 for (int i = 0; i < 100; i++) EXPECT_EQ(picker.Pick(rnd), -1);
129 }
130
131 // Create zero weights array
132 std::vector<int32> weights(size);
133 for (int elem = 0; elem < size; elem++) {
134 weights[elem] = 0;
135 }
136
137 // Check that singleton picker always returns the same element
138 for (int elem = 0; elem < size; elem++) {
139 WeightedPicker picker(size);
140 picker.SetAllWeights(0);
141 picker.set_weight(elem, elem + 1);
142 for (int i = 0; i < 100; i++) EXPECT_EQ(picker.Pick(rnd), elem);
143 weights[elem] = 10;
144 picker.SetWeightsFromArray(size, &weights[0]);
145 for (int i = 0; i < 100; i++) EXPECT_EQ(picker.Pick(rnd), elem);
146 weights[elem] = 0;
147 }
148
149 // Check that uniform picker generates elements roughly uniformly
150 {
151 WeightedPicker picker(size);
152 CheckUniform(rnd, &picker, 100000);
153 }
154
155 // Check uniform picker that was grown piecemeal
156 if (size / 3 > 0) {
157 WeightedPicker picker(size / 3);
158 while (picker.num_elements() != size) {
159 picker.Append(1);
160 }
161 CheckUniform(rnd, &picker, 100000);
162 }
163
164 // Check that skewed distribution works
165 if (size <= 10) {
166 // When picker grows one element at a time
167 WeightedPicker picker(size);
168 int32 weight = 1;
169 for (int elem = 0; elem < size; elem++) {
170 picker.set_weight(elem, weight);
171 weights[elem] = weight;
172 weight *= 2;
173 }
174 CheckSkewed(rnd, &picker, 1000000);
175
176 // When picker is created from an array
177 WeightedPicker array_picker(0);
178 array_picker.SetWeightsFromArray(size, &weights[0]);

Callers 1

TESTFunction · 0.85

Calls 8

CheckUniformFunction · 0.85
CheckSkewedFunction · 0.85
SetAllWeightsMethod · 0.80
PickMethod · 0.80
set_weightMethod · 0.80
SetWeightsFromArrayMethod · 0.80
num_elementsMethod · 0.45
AppendMethod · 0.45

Tested by

no test coverage detected