def conv1x1(in_planes, out_planes, stride=1): """1x1 convolution""" return adder.adder2d(in_planes, out_planes, kernel_size=1, stride=stride, bias=False)
def conv3x3(in_planes, out_planes, stride=1): " 3x3 convolution with padding " return adder.adder2d(in_planes, out_planes, kernel_size=3, stride=stride, padding=1, bias=False)
def _make_layer(self, block, planes, blocks, stride=1): downsample = None if stride != 1 or self.inplanes != planes * block.expansion: downsample = nn.Sequential( adder.adder2d(self.inplanes, planes * block.expansion, kernel_size=1, stride=stride, bias=False), nn.BatchNorm2d(planes * block.expansion) ) layers = [block(inplanes=self.inplanes, planes=planes, stride=stride, downsample=downsample)] self.inplanes = planes * block.expansion for _ in range(1, blocks): layers.append(block(inplanes=self.inplanes, planes=planes)) return nn.Sequential(*layers)
def conv3x3(input_channel, output_channel, stride=1, op=1): " 3x3 convolution with padding op:1-add 0:mul" if op: return adder.adder2d(input_channel, output_channel, kernel_size=3, stride=stride, padding=1, bias=False) else: return nn.Conv2d(input_channel, output_channel, kernel_size=3, stride=stride, padding=1, bias=False)
def conv3x3(in_channels, out_channels, padding=1): """3x3 convolution with padding""" return adder.adder2d(in_channels, out_channels, kernel_size=3, stride=1, padding=1, bias=False)