code: def test_bf16_pooling():
      pool_params = {
          "kernel": (3, 3),
          "stride": (1, 1),
          "pad": (0, 0),
          "name": "pool",
      }
      data_shapes = [(3, 16, 28, 28), (3, 32, 7, 7)]
      pool_types = ["max", "avg"]
      pool_conventions = ["full", "valid"]
      for new_params in itertools.product(
          data_shapes, pool_types, pool_conventions
      ):
          pool_params.update(
              {
                  "pool_type": new_params[1],
                  "pooling_convention": new_params[2],
              }
          )
  
          data_sym_fp32 = mx.sym.Variable(name="data")
          data_sym_bf16 = mx.sym.Variable(name="data", dtype="bfloat16")
          pool_fp32 = mx.sym.Pooling(data_sym_fp32, **pool_params)
          pool_bf16 = mx.sym.Pooling(data_sym_bf16, **pool_params)
          check_operator_accuracy(
              pool_fp32,
              pool_bf16,
              data_shape=new_params[0],
              bf16_use_fp32_params=False,
          )
  
imports: import os
  import sys
  import mxnet
  import numpy
  from random import randint
  import itertools
  from mxnet.test_utils import assert_almost_equal_with_err, rand_shape_nd
  import pytest
label_desc: Use image node_id 5 for calling a global function with example usage: test_bf16_pooling() without return types