|
@@ -26,6 +26,11 @@ class BaseResNet(PretrainedModelMixin):
|
|
classifier_layers=["fc6"],
|
|
classifier_layers=["fc6"],
|
|
)
|
|
)
|
|
|
|
|
|
|
|
+ def init_extra_layers(self, n_classes, **kwargs):
|
|
|
|
+ if hasattr(self, "fc6"):
|
|
|
|
+ delattr(self, "fc6")
|
|
|
|
+ self.fc6 = L.Linear(2048, n_classes)
|
|
|
|
+
|
|
@property
|
|
@property
|
|
def functions(self):
|
|
def functions(self):
|
|
return super(BaseResNet, self).functions
|
|
return super(BaseResNet, self).functions
|
|
@@ -34,14 +39,14 @@ class BaseResNet(PretrainedModelMixin):
|
|
class ResNet35(BaseResNet, chainer.Chain):
|
|
class ResNet35(BaseResNet, chainer.Chain):
|
|
n_layers = 35
|
|
n_layers = 35
|
|
|
|
|
|
- def init_extra_layers(self, n_classes, **kwargs):
|
|
|
|
|
|
+ def init_extra_layers(self, *args, **kwargs):
|
|
|
|
+ super(ResNet35, self).init_extra_layers(*args, **kwargs)
|
|
self.conv1 = L.Convolution2D(3, 64, 7, 2, 3, **kwargs)
|
|
self.conv1 = L.Convolution2D(3, 64, 7, 2, 3, **kwargs)
|
|
self.bn1 = L.BatchNormalization(64)
|
|
self.bn1 = L.BatchNormalization(64)
|
|
self.res2 = BuildingBlock(2, 64, 64, 256, 1, **kwargs)
|
|
self.res2 = BuildingBlock(2, 64, 64, 256, 1, **kwargs)
|
|
self.res3 = BuildingBlock(3, 256, 128, 512, 2, **kwargs)
|
|
self.res3 = BuildingBlock(3, 256, 128, 512, 2, **kwargs)
|
|
self.res4 = BuildingBlock(3, 512, 256, 1024, 2, **kwargs)
|
|
self.res4 = BuildingBlock(3, 512, 256, 1024, 2, **kwargs)
|
|
self.res5 = BuildingBlock(3, 1024, 512, 2048, 2, **kwargs)
|
|
self.res5 = BuildingBlock(3, 1024, 512, 2048, 2, **kwargs)
|
|
- self.fc6 = L.Linear(2048, n_classes)
|
|
|
|
|
|
|
|
@property
|
|
@property
|
|
def functions(self):
|
|
def functions(self):
|