| 110 | |
| 111 | |
| 112 | class GroupNormalize(object): |
| 113 | def __init__(self, mean, std): |
| 114 | self.mean = mean |
| 115 | self.std = std |
| 116 | |
| 117 | def __call__(self, tensor): |
| 118 | rep_mean = self.mean * (tensor.size()[0] // len(self.mean)) |
| 119 | rep_std = self.std * (tensor.size()[0] // len(self.std)) |
| 120 | |
| 121 | # TODO: make efficient |
| 122 | for t, m, s in zip(tensor, rep_mean, rep_std): |
| 123 | t.sub_(m).div_(s) |
| 124 | |
| 125 | return tensor |
| 126 | |
| 127 | |
| 128 | class GroupScale(object): |