code: def _init_scratch(self):
      self._scratch_blob = {}
      self._scratch_status = {}
      for blob_name in self._input_blob_names:
          scratch_name = (
              self._namescope
              + blob_name
              + "_scratch_"
              + self._input_source_name
          )
          self._scratch_blob[blob_name] = core.BlobReference(
              scratch_name
          )
          self._scratch_status[blob_name] = core.BlobReference(
              scratch_name + "_status"
          )
  
      # Feed empty arrays to the scratch blobs here, so that there won't be
      # race conditions when calling FeedBlob (which calls wworkspace
      # CreateBlob()) from enqueue threads
      for b in chain(
          self._scratch_blob.values(), self._scratch_status.values()
      ):
          workspace.FeedBlob(
              b,
              np.array([]).astype(np.float32),
              device_option=self._device_option,
          )
  
imports: import queue
  from itertools import chain
  import logging
  import threading
  import numpy
  import time
  from caffe2.python import workspace, core, scope, utils
  from caffe2.proto import caffe2_pb2
  from caffe2.python.parallel_workers import Metrics, State, WorkerCoordinator, GlobalWorkerCoordinator, Worker, run_worker
label_desc: Use image node_id 10 for calling the BatchFeeder obj's underlying member method code with example usage: obj._init_scratch() without return types