Пример #1
0
    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)
Пример #3
0
 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])
Пример #4
0
 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)
Пример #5
0
    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()