Thanks for your contribution!
But i still have some questions ,like this !
why training code different from the test code in the cls_head.py's forward method?
def forward(self, x):
if not self.fcn_testing:
if x.ndimension() == 4:
x = x.unsqueeze(2)
assert x.shape[1] == self.in_channels
assert x.shape[2] == self.temporal_feature_size
assert x.shape[3] == self.spatial_feature_size
assert x.shape[4] == self.spatial_feature_size
if self.with_avg_pool:
x = self.avg_pool(x)
if self.dropout is not None:
x = self.dropout(x)
x = x.view(x.size(0), -1)
cls_score = self.fc_cls(x)
return cls_score
else:
if self.with_avg_pool:
x = self.avg_pool(x)
if self.new_cls is None:
self.new_cls = nn.Conv3d(self.in_channels, self.num_classes, 1, 1, 0).cuda()
self.new_cls.weight.copy_(self.fc_cls.weight.unsqueeze(-1).unsqueeze(-1).unsqueeze(-1))
self.new_cls.bias.copy_(self.fc_cls.bias)
self.fc_cls = None
class_map = self.new_cls(x)
# return class_map.mean([2,3,4])
return class_map
Thanks for your contribution! But i still have some questions ,like this ! why training code different from the test code in the cls_head.py's forward method?