code: def test_concatenate3d(axis, io_type, backend):
      input_shape = (10, 10, 3)
  
      in1 = Input(shape=input_shape)
      in2 = Input(shape=input_shape)
      out = Concatenate(axis=axis)([in1, in2])
  
      model = tf.keras.models.Model(inputs=[in1, in2], outputs=out)
      model.compile()
  
      config = hls4ml.utils.config_from_keras_model(
          model, default_precision="ap_fixed<32,16>"
      )
      output_dir = str(
          test_root_path
          / f"hls4mlprj_concatenate3d_axis_{str(axis)}_{io_type}_{backend}"
      )
      hls_model = hls4ml.converters.convert_from_keras_model(
          model,
          hls_config=config,
          output_dir=output_dir,
          io_type=io_type,
          backend=backend,
      )
      hls_model.compile()
  
      X_input1 = np.random.rand(100, *input_shape)
      X_input2 = np.random.rand(100, *input_shape)
  
      keras_prediction = model.predict([X_input1, X_input2])
      hls_prediction = hls_model.predict([X_input1, X_input2]).reshape(
          keras_prediction.shape
      )
  
      np.testing.assert_allclose(
          hls_prediction, keras_prediction, rtol=0, atol=0.001
      )
  
file_path: hls4ml/test/pytest/test_merge.py
imports: from pathlib import Path
  import numpy
  import pytest
  import tensorflow
  from tensorflow.keras.layers import Add, Average, Concatenate, Dot, Input, Maximum, Minimum, Multiply, Subtract
  import hls4ml
label_desc: Use image node_id 5 for calling a global function with example usage: test_concatenate3d(axis, io_type, backend) without return types