def __init__(self, depth, num_classes, is_imagenet): super(ResNet_cutmix, self).__init__() self.in_planes = 64 self.is_imagenet = is_imagenet block, num_blocks = cfg(depth) self.cutmix = CutMix() self.conv1 = conv3x3(3, 64) self.bn1 = nn.BatchNorm2d(64) self.layer1 = self._make_layer(block, 64, num_blocks[0], stride=1) self.layer2 = self._make_layer(block, 128, num_blocks[1], stride=2) self.layer3 = self._make_layer(block, 256, num_blocks[2], stride=2) self.layer4 = self._make_layer(block, 512, num_blocks[3], stride=2) self.linear = nn.Linear(512 * block.expansion, num_classes)
def __init__(self, depth, num_classes, dropout_rate, is_immagenet): super(ResNet_att, self).__init__() self.in_planes = 64 self.num_classes = num_classes self.drop_rate = dropout_rate self.is_imagenet = is_immagenet block, num_blocks = cfg(depth) self.conv1 = conv3x3(3, 64) self.bn1 = nn.BatchNorm2d(64) self.layer1 = self._make_layer(block, 64, num_blocks[0], stride=1) self.layer2 = self._make_layer(block, 128, num_blocks[1], stride=2) self.layer3 = self._make_layer(block, 256, num_blocks[2], stride=2) self.layer4 = self._make_layer(block, 512, num_blocks[3], stride=2) self.linear = nn.Linear(512 * block.expansion, num_classes) self.dropout = CAMDropout(self.linear.weight, self.linear.bias, self.drop_rate, device=torch.device('cuda'))
def __init__(self, depth, widen_factor, conv_bias, dropout_rate, num_classes, is_imagenet=False): super(Wide_ResNet, self).__init__() self.in_planes = 16 self.is_imagenet = is_imagenet assert ((depth - 4) % 6 == 0), 'Wide-resnet depth should be 6n+4' n = (depth - 4) / 6 k = widen_factor print('| Wide-Resnet %dx%d' % (depth, k)) nStages = [16, 16 * k, 32 * k, 64 * k] self.conv1 = conv3x3(3, nStages[0], stride=1, bias=conv_bias) self.layer1 = self._wide_layer(wide_basic, nStages[1], n, dropout_rate, stride=1, conv_bias=conv_bias) self.layer2 = self._wide_layer(wide_basic, nStages[2], n, dropout_rate, stride=2, conv_bias=conv_bias) self.layer3 = self._wide_layer(wide_basic, nStages[3], n, dropout_rate, stride=2, conv_bias=conv_bias) self.bn1 = nn.BatchNorm2d(nStages[3]) # 20200114 changed here self.linear = nn.Linear(nStages[3], num_classes)