code: def testAutoBatchingFibonacciTF(self):
      for inputs, outputs in ([5], [8]), (
          [5, 6, 8, 9],
          [8, 13, 34, 55],
      ):
          inputs = np.array(inputs, dtype=np.int32)
          outputs = np.array(outputs, dtype=np.int32)
          prog = fibonacci_program()
          # print(prog)
          inputs_t = tf.constant(inputs, dtype=np.int32)
          typed = type_inference.infer_types(
              prog, [inputs_t], TF_BACKEND
          )
          # print(typed)
          alloc = allocation_strategy.optimize(typed)
          lowered = lowering.lower_function_calls(alloc)
          # print(lowered)
          self.assertAllEqual(
              outputs,
              self.evaluate(
                  _execute(lowered, inputs_t, 15, TF_BACKEND)
              ),
          )
  
imports: import numpy
  import tensorflow.compat.v2
  from tensorflow_probability.python.experimental.auto_batching import allocation_strategy
  from tensorflow_probability.python.experimental.auto_batching import dsl
  from tensorflow_probability.python.experimental.auto_batching import instructions
  from tensorflow_probability.python.experimental.auto_batching import lowering
  from tensorflow_probability.python.experimental.auto_batching import numpy_backend
  from tensorflow_probability.python.experimental.auto_batching import tf_backend
  from tensorflow_probability.python.experimental.auto_batching import type_inference
  from tensorflow_probability.python.experimental.auto_batching import virtual_machine
  from tensorflow_probability.python.internal import test_util
label_desc: Use image node_id 2 for calling the AutoBatchingTest obj's underlying member method code with example usage: obj.testAutoBatchingFibonacciTF() without return types