def _make_layers(self, cfg, quantize_bit=32): layers = [] in_channels = 3 for x in cfg: # [64, 'M', 128, 'M', 256, 256, 'M', 512, 512, 'M', 512, 512, 'M'] if type(x) is tuple: layers += [ nn.Conv2d(x[0], x[1], kernel_size=2, stride=2, bias=self.bias, groups=x[1]), catSNN.Clamp(max=self.clamp_max) ] #layers += [nn.Conv2d(x[0], x[1], kernel_size=2, stride = 2, bias=self.bias, groups = x[1]),catSNN.Clamp(max = self.clamp_max),nn.Dropout2d(0.2)] else: layers += [ catSNN.QuantizedConv2d(in_channels, x, kernel_size=3, padding=1, bias=self.bias, quantize_bit=quantize_bit), catSNN.Clamp(max=self.clamp_max) ] #layers += [catSNN.QuantizedConv2d(in_channels, x, kernel_size=3, padding=1, bias=self.bias, quantize_bit=quantize_bit),catSNN.Clamp(max = self.clamp_max),nn.Dropout2d(0.2)] if self.quantize_factor != -1: layers += [catSNN.Quantize(self.quantize_factor)] in_channels = x layers += [nn.AvgPool2d(kernel_size=1, stride=1)] return nn.Sequential(*layers)
def _make_layers(self): layers = [] cfg = [(64, 1), (128, 1), (256, 1), (256, 2), (256, 1), (512, 1), (512, 2), 'M'] layers += [nn.Conv2d(3, 32, 3, 1, 1, bias=True), catSNN.Clamp(max=1)] in_channels = 32 for x in cfg: if x == 'M': layers += [nn.AvgPool2d(kernel_size=8, stride=8)] else: layers += [ nn.Conv2d(in_channels, 2 * in_channels, 1, 1, 0, bias=True), catSNN.Clamp(max=1) ] layers += [ nn.Conv2d(2 * in_channels, 2 * in_channels, 3, x[1], 1, bias=True, groups=2 * in_channels), catSNN.Clamp(max=1) ] layers += [ nn.Conv2d(2 * in_channels, x[0], 1, 1, 0, bias=True), catSNN.Clamp(max=1) ] in_channels = x[0] return nn.Sequential(*layers)
def _make_layers(self, cfg): layers = [] in_channels = 3 for x in cfg: if x == 'M': layers += [ nn.AvgPool2d(kernel_size=2, stride=2), nn.Dropout2d(0.15) ] else: padding = x[1] if isinstance(x, tuple) else 1 out_channels = x[0] if isinstance(x, tuple) else x layers += [ catSNN.QuantizedConv2d(in_channels, out_channels, kernel_size=3, padding=padding, bias=self.bias), nn.BatchNorm2d(out_channels), catSNN.Clamp(max=self.clamp_max), nn.Dropout2d(0.15) ] in_channels = out_channels layers += [nn.AvgPool2d(kernel_size=1, stride=1)] return nn.Sequential(*layers)
def _make_layers(self, cfg, quantize_bit=32): layers = [] in_channels = 3 for x in cfg: # [64, 'M', 128, 'M', 256, 256, 'M', 512, 512, 'M', 512, 512, 'M'] if x == 'M': layers += [nn.AvgPool2d(kernel_size=2, stride=2)] else: layers += [catSNN.QuantizedConv2d(in_channels, x, kernel_size=3, padding=1, bias=self.bias, quantize_bit=quantize_bit), catSNN.Clamp(max = self.clamp_max)]#catSNN.Clamp(max = self.clamp_max) if self.quantize_factor!=-1: layers += [catSNN.Quantize(self.quantize_factor)] in_channels = x layers += [nn.AvgPool2d(kernel_size=1, stride=1)] return nn.Sequential(*layers)