code: def visualize_decision(
      features, labels, true_w_b, candidate_w_bs, fname
  ):
      """Utility method to visualize decision boundaries in R^2.
  
      Args:
        features: Input points, as a Numpy `array` of shape `[num_examples, 2]`.
        labels: Numpy `float`-like array of shape `[num_examples, 1]` giving a
        label for each point.
        true_w_b: A `tuple` `(w, b)` where `w` is a Numpy array of
        shape `[2]` and `b` is a scalar `float`, interpreted as a
        decision rule of the form `dot(features, w) + b > 0`.
        candidate_w_bs: Python `iterable` containing tuples of the same form as
        true_w_b.
        fname: The filename to save the plot as a PNG image (Python `str`).
      """
      fig = figure.Figure(figsize=(6, 6))
      canvas = backend_agg.FigureCanvasAgg(fig)
      ax = fig.add_subplot(1, 1, 1)
      ax.scatter(
          features[:, 0],
          features[:, 1],
          c=np.float32(labels[:, 0]),
          cmap=cm.get_cmap("binary"),
          edgecolors="k",
      )
  
      def plot_weights(w, b, **kwargs):
          w1, w2 = w
          x1s = np.linspace(-1, 1, 100)
          x2s = -(w1 * x1s + b) / w2
          ax.plot(x1s, x2s, **kwargs)
  
      for w, b in candidate_w_bs:
          plot_weights(
              w,
              b,
              alpha=1.0 / np.sqrt(len(candidate_w_bs)),
              lw=1,
              color="blue",
          )
  
      if true_w_b is not None:
          plot_weights(
              *true_w_b, lw=4, color="green", label="true separator"
          )
  
      ax.set_xlim([-1.5, 1.5])
      ax.set_ylim([-1.5, 1.5])
      ax.legend()
  
      canvas.print_figure(fname, format="png")
      print("saved {}".format(fname))
  
file_path: probability/tensorflow_probability/examples/logistic_regression.py
imports: import os
  from absl import app
  from absl import flags
  from matplotlib import cm
  from matplotlib import figure
  from matplotlib.backends import backend_agg
  import numpy
  import tensorflow.compat.v2
  import tensorflow_probability
  from tensorflow_probability.python.internal import tf_keras
label_desc: Use image node_id 1 for calling a global function with example usage: visualize_decision(features, labels, true_w_b, candidate_w_bs, fname) without return types