3 from ..timer
import Timer
7 self.
_warmup = kwargs.pop(
'warmup', 3)
8 self.
_repeat = kwargs.pop(
'repeat', 10)
9 self.
_reduction = kwargs.pop(
'reduction',
'median')
13 def _calcMedian(self, records):
14 ''' Return the median of records
19 return (records[mid] + records[mid - 1]) / 2
23 def _calcGMean(self, records, drop_largest=3):
24 ''' Return the geometric mean of records after drop the first drop_largest
28 print(
'len(records)({}) <= drop_largest({}), stop dropping.'.format(l, drop_largest))
29 records_sorted = sorted(records, reverse=
True)
30 return sum(records_sorted[drop_largest:]) / (l - drop_largest)
33 records = self.
_timer.getRecords()
39 raise NotImplementedError(
'Reduction {} is not supported'.format(self.
_reduction))
44 def forward(self, model, *args, **kwargs):
45 raise NotImplementedError(
'Not implemented')