def __init__(self, num_class=10, channel=1): super(LeNet5, self).__init__() self.num_class = num_class self.conv1 = nn.Conv2dBnFoldQuant(channel, 6, 5, pad_mode='valid', per_channel=True, quant_delay=900) self.conv2 = nn.Conv2dBnFoldQuant(6, 16, 5, pad_mode='valid', per_channel=True, quant_delay=900) self.fc1 = nn.DenseQuant(16 * 5 * 5, 120, per_channel=True, quant_delay=900) self.fc2 = nn.DenseQuant(120, 84, per_channel=True, quant_delay=900) self.fc3 = nn.DenseQuant(84, self.num_class, per_channel=True, quant_delay=900) self.relu = nn.ActQuant(nn.ReLU(), per_channel=False, quant_delay=900) self.max_pool2d = nn.MaxPool2d(kernel_size=2, stride=2) self.flatten = nn.Flatten()
def __init__(self, in_planes, out_planes, kernel_size=3, stride=1, groups=1): super(ConvBNReLU, self).__init__() padding = (kernel_size - 1) // 2 conv = Conv2dBnFoldQuant(in_planes, out_planes, kernel_size, stride, pad_mode='pad', padding=padding, group=groups, fake=_fake, quant_config=_quant_config) layers = [conv, nn.ActQuant(nn.ReLU())] if _fake else [conv, nn.ReLU()] self.features = nn.SequentialCell(layers)
def __init__(self, in_planes, out_planes, kernel_size=3, stride=1): super(FirstQuantLayer, self).__init__() padding = (kernel_size - 1) // 2 in_channels = in_planes out_channels = out_planes conv_inner = nn.Conv2dBnFoldQuantOneConv(in_channels, out_channels, kernel_size=kernel_size, stride=stride, pad_mode='pad', padding=padding, quant_config=quant_config, quant_dtype=QuantDtype.INT8) activation = nn.ActQuant(activation=nn.ReLU6(), quant_config=quant_config, quant_dtype=QuantDtype.INT8) self.features = nn.SequentialCell([conv_inner, activation])
def __init__(self, in_planes, out_planes, kernel_size=3, stride=1, groups=1): super(ConvBNReLU, self).__init__() padding = (kernel_size - 1) // 2 conv = Conv2dBatchNormQuant(in_planes, out_planes, kernel_size, stride, pad_mode='pad', padding=padding, group=groups, fake=_fake, per_channel=_per_channel, symmetric=_symmetric) layers = [conv, nn.ActQuant(nn.ReLU())] if _fake else [conv, nn.ReLU()] self.features = nn.SequentialCell(layers)
def __init__(self, num_class=10, channel=1): super(LeNet5, self).__init__() self.num_class = num_class self.qconfig = create_quant_config(per_channel=(True, False), symmetric=(True, False)) self.conv1 = nn.Conv2dQuant(channel, 6, 5, pad_mode='valid', quant_config=self.qconfig, quant_dtype=QuantDtype.INT8) self.conv2 = nn.Conv2dQuant(6, 16, 5, pad_mode='valid', quant_config=self.qconfig, quant_dtype=QuantDtype.INT8) self.fc1 = nn.DenseQuant(16 * 5 * 5, 120, quant_config=self.qconfig, quant_dtype=QuantDtype.INT8) self.fc2 = nn.DenseQuant(120, 84, quant_config=self.qconfig, quant_dtype=QuantDtype.INT8) self.fc3 = nn.DenseQuant(84, self.num_class, quant_config=self.qconfig, quant_dtype=QuantDtype.INT8) self.relu = nn.ActQuant(nn.ReLU(), quant_config=self.qconfig, quant_dtype=QuantDtype.INT8) self.max_pool2d = nn.MaxPool2d(kernel_size=2, stride=2) self.flatten = nn.Flatten()