class_docstr: Artificially generated dataset for logistic regression
code: def _data_generator(self):
      def norm(x, y):
          return tf.cast(x, tf.float32), tf.expand_dims(y, 0)
  
      x_raw = tf.random.uniform(
          minval=-0.5,
          maxval=0.5,
          shape=[self.num_samples, self.num_features],
      )
  
      y_raw = tf.cast(
          tf.reduce_mean(x_raw, axis=1) > 0, dtype=tf.float32
      )
  
      dataset = tf.data.Dataset.from_tensor_slices((x_raw, y_raw))
      dataset = (
          dataset.map(norm)
          .cache()
          .shuffle(buffer_size=self.batch_size)
          .batch(self.batch_size, drop_remainder=True)
      )  # drop remainder because we need to fix batch size in private model
      if self.train:
          dataset = dataset.repeat()
      dataset = dataset.prefetch(tf.data.experimental.AUTOTUNE)
      data_iter = iter(dataset)
  
      return data_iter
  
imports: import tensorflow
label_desc: Use image node_id 4 for calling the LogisticArtificialDataset obj's underlying member method code with example usage: obj._data_generator() and returns: data_iter, tf,  tf