@supriyar Thanks you for your answers.
My model code looks like this:
class GDC(Module):
    def __init__(self, embedding_size):
        super(GDC, self).__init__()
        self.conv_6_dw = Linear_block(512, 512, groups=512, kernel=(7,7), stride=(1, 1), padding=(0, 0))
        self.conv_6_flatten = Flatten()
        self.linear = Linear(512, embedding_size, bias=False)
        self.bn = BatchNorm1d(embedding_size)

    def forward(self, x):
        x = self.conv_6_dw(x)
        x = self.conv_6_flatten(x)
        x = self.linear(x)
        x = self.bn(x)
        return x

class NetronNet(Module):
    def __init__(self, embedding_size):
        super(NetronNet, self).__init__()
        self.quant = QuantStub()
        self.conv = ...(some convolutional layer)
        self.linear = GDC(embedding_size, embedding_size)
        self.dequant = DeQuantStub()

    def forward(self, x):
        x = self.quant(x)
        x = self.conv(x)
        x = self.linear(x)
        x = self.dequant(x)
        return x

    def fuse_model(self):
        (fuse self.conv layer)

Here are the code to quantize the model:
    netron.to(cpu_device)
    netron.train()
    netron.fuse_model()
    netron.qconfig = torch.quantization.get_default_qat_qconfig('fbgemm')

To elaborate, after fuse model code, my conv layers work just fine. But the GDC module layer(linear with batchnorm) failed to quantize even after I add QuantStub()/DeQuantStub() layer in the module. So how do I know when the layer has been quantize/transform correctly ?