code: def forward_variable(inputs, outputs, side, feed=None):
      rng = np.random.RandomState(389)
      if feed is None:
          if isinstance(inputs, nn.Variable):
              inputs.d = rng.randn(*inputs.d.shape)
          else:
              for v in inputs:
                  v.d = rng.randn(*v.d.shape)
      elif callable(feed):
          feed(inputs, rng)
  
      if isinstance(outputs, nn.Variable):
          outputs.forward()
          yield outputs.d.copy()
      else:
          y = F.sink(*outputs)
          for v in outputs:
              v.persistent = True
          y.forward()
          for v in outputs:
              yield v.d.copy()
  
imports: import os
  import io
  import pytest
  import numpy
  import nnabla
  import nnabla.functions
  from nnabla.testing import assert_allclose
  from contextlib import contextmanager
  from shutil import rmtree
  import tempfile
  import numpy
  import warnings
  from legacy_expander import NnpExpander
  from nnabla.utils import nnabla_pb2
  from legacy_load import _create_variable
  import google.protobuf.text_format
  from nnabla.utils.image_utils import imsave
  from nnabla.utils.get_file_handle import get_file_handle_save
  from nnabla.utils.nnp_format import nnp_version
label_desc: Use image node_id 2 for calling a global function with example usage: forward_variable(inputs, outputs, side, feed) without return types