|
import os |
|
|
|
|
|
class AverageMeter: |
|
"""Computes and stores the average and current value""" |
|
def __init__(self): |
|
self.reset() |
|
|
|
def reset(self): |
|
self.val = 0 |
|
self.avg = 0 |
|
self.sum = 0 |
|
self.count = 0 |
|
|
|
def update(self, val, n=1): |
|
self.val = val |
|
self.sum += val * n |
|
self.count += n |
|
self.avg = self.sum / self.count |
|
|
|
|
|
def accuracy(output, target, topk=(1,)): |
|
"""Computes the precision@k for the specified values of k""" |
|
maxk = max(topk) |
|
batch_size = target.size(0) |
|
|
|
_, pred = output.topk(maxk, 1, True, True) |
|
pred = pred.t() |
|
correct = pred.eq(target.view(1, -1).expand_as(pred)) |
|
|
|
res = [] |
|
for k in topk: |
|
correct_k = correct[:k].reshape(-1).float().sum(0) |
|
res.append(correct_k.mul_(100.0 / batch_size)) |
|
return res |
|
|
|
|
|
def get_outdir(path, *paths, inc=False): |
|
outdir = os.path.join(path, *paths) |
|
if not os.path.exists(outdir): |
|
os.makedirs(outdir) |
|
elif inc: |
|
count = 1 |
|
outdir_inc = outdir + '-' + str(count) |
|
while os.path.exists(outdir_inc): |
|
count = count + 1 |
|
outdir_inc = outdir + '-' + str(count) |
|
assert count < 100 |
|
outdir = outdir_inc |
|
os.makedirs(outdir) |
|
return outdir |
|
|
|
|