code: def test_neg_conv_bn_add_relu(data_shape):
      # conv + bn + add + relu can't be fusion case
      # eg.1
      #   --------------> [custom op]
      #   |
      # conv -----------> bn -----------> add -----------> relu
      #
      # eg.2
      #                    -------------> [custom op]
      #                    |
      # conv -----------> bn -----------> add -----------> relu
      #
      # eg.3
      #                                    --------------> [custom op]
      #                                    |
      # conv -----------> bn -----------> add -----------> relu
  
      class NegConvBNAddRelu(nn.HybridBlock):
          def __init__(self, connect_mode="conv_customop", **kwargs):
              super(NegConvBNAddRelu, self).__init__(**kwargs)
              self.conv1 = nn.Conv2D(
                  channels=64,
                  kernel_size=(3, 3),
                  strides=(1, 1),
                  use_bias=False,
              )
              self.bn = nn.BatchNorm()
              self.act = nn.Activation("relu")
              self.pool = nn.AvgPool2D(pool_size=(4, 4))
              self.tailneg = TailNegBlock()
              self.connect_mode = connect_mode
              self.add_value = mx.gluon.Parameter(
                  "add_value",
                  init=mx.init.Xavier(magnitude=2.24),
                  dtype="float32",
                  allow_deferred_init=True,
              )
  
          def forward(self, x):
              conv = self.conv1(x)
              bn = self.bn(conv)
              print(bn.shape)
              sum1 = bn + self.add_value.data(x.device)
              relu = self.act(sum1)
              if self.connect_mode == "conv_customop":
                  pool = self.pool(conv)
              elif self.connect_mode == "bn_customop":
                  pool = self.pool(bn)
              else:
                  pool = self.pool(sum1)
              return self.tailneg(relu, pool)
  
          def infer_shape(self, x):
              self.add_value.shape = (
                  data_shape[0],
                  64,
                  data_shape[2] - 2,
                  data_shape[3] - 2,
              )
  
      # eg.1
      net1 = NegConvBNAddRelu(connect_mode="conv_customop")
      attrs1 = []
      excluded_attrs1 = ["with_sum", "with_postsum_act", "with_bn"]
      check_neg_fusion(net1, attrs1, excluded_attrs1, data_shape)
  
      # eg.2
      net2 = NegConvBNAddRelu(connect_mode="bn_customop")
      attrs2 = ["with_bn"]
      excluded_attrs2 = ["with_sum", "with_postsum_act"]
      check_neg_fusion(net2, attrs2, excluded_attrs2, data_shape)
  
      # eg.3
      net3 = NegConvBNAddRelu(connect_mode="add_customop")
      attrs3 = ["with_bn", "with_sum"]
      excluded_attrs3 = ["with_postsum_act"]
      check_neg_fusion(net3, attrs3, excluded_attrs3, data_shape)
  
imports: import copy
  import mxnet
  import pytest
  from subgraph_common import check_fusion, check_neg_fusion, check_quantize
  from subgraph_common import CustomNormalInit, DATA_SHAPE, RELU6, TailNegBlock
  from subgraph_common import DATA_SHAPE, SG_PASS_NAME, QUANTIZE_SG_PASS_NAME
  from mxnet.contrib import quantization
  from mxnet.gluon import nn
  from mxnet.test_utils import assert_almost_equal, assert_almost_equal_with_err
label_desc: Use image node_id 24 for calling a global function with example usage: test_neg_conv_bn_add_relu(data_shape) and returns: self