def __init__(self, inplanes, planes, stride=1, downsample=None): super(BasicBlock, self).__init__() self.conv1 = conv3x3(inplanes, planes, stride) self.bn1 = layer.BatchNorm2d(planes) self.conv2 = conv3x3(planes, planes) self.bn2 = layer.BatchNorm2d(planes) self.relu1 = layer.ReLU() self.add = layer.Add() self.relu2 = layer.ReLU() self.downsample = downsample self.stride = stride
def __init__(self, inplanes, planes, stride=1, downsample=None): super(Bottleneck, self).__init__() self.conv1 = layer.Conv2d(inplanes, planes, 1, bias=False) self.bn1 = layer.BatchNorm2d(planes) self.relu1 = layer.ReLU() self.conv2 = layer.Conv2d(planes, planes, 3, stride=stride, padding=1, bias=False) self.bn2 = layer.BatchNorm2d(planes) self.relu2 = layer.ReLU() self.conv3 = layer.Conv2d(planes, planes * self.expansion, 1, bias=False) self.bn3 = layer.BatchNorm2d(planes * self.expansion) self.add = layer.Add() self.relu3 = layer.ReLU() self.downsample = downsample self.stride = stride
def __init__(self, in_filters, out_filters, reps, strides=1, padding=0, start_with_relu=True, grow_first=True): super(Block, self).__init__() if out_filters != in_filters or strides != 1: self.skip = layer.Conv2d(in_filters, out_filters, 1, stride=strides, padding=padding, bias=False) self.skipbn = layer.BatchNorm2d(out_filters) else: self.skip = None self.layers = [] filters = in_filters if grow_first: self.layers.append(layer.ReLU()) self.layers.append( layer.SeparableConv2d(in_filters, out_filters, 3, stride=1, padding=1, bias=False)) self.layers.append(layer.BatchNorm2d(out_filters)) filters = out_filters for i in range(reps - 1): self.layers.append(layer.ReLU()) self.layers.append( layer.SeparableConv2d(filters, filters, 3, stride=1, padding=1, bias=False)) self.layers.append(layer.BatchNorm2d(filters)) if not grow_first: self.layers.append(layer.ReLU()) self.layers.append( layer.SeparableConv2d(in_filters, out_filters, 3, stride=1, padding=1, bias=False)) self.layers.append(layer.BatchNorm2d(out_filters)) if not start_with_relu: self.layers = self.layers[1:] else: self.layers[0] = layer.ReLU() if strides != 1: self.layers.append(layer.MaxPool2d(3, strides, padding + 1)) self.register_layers(*self.layers) self.add = layer.Add()