class_docstr: Implement the Chebyshev Scalarization.
  
  Given a vector of (at least two) objectives M, a weight vector W, and a
  reference point Z, all having the same dimension, the Chebyshev scalarization
  is defined as:
  
  ```min_{i} W_i * (M_i - Z_i).```
  
  Note that reference point Z is expected to be dominated by all Pareto-optimal
  objective vectors.
class_docstr_tok: ["Implement","the","Chebyshev","Scalarization",".","Given","a","vector","of","(","at","least","two",")","objectives","M",",","a","weight","vector","W",",","and","a","reference","point","Z",",","all","having","the","same","dimension",",","the","Chebyshev","scalarization","is","defined","as",":","``","`","min_","{","i","}","W_i","*","(","M_i","-","Z_i",")",".","``","`","Note","that","reference","point","Z","is","expected","to","be","dominated","by","all","Pareto-optimal","objective","vectors","."]
code: def _scalarize(
      self, transformed_multi_objectives: tf.Tensor
  ) -> tf.Tensor:
      _validate_scalarization_parameter_shape(
          transformed_multi_objectives,
          {
              "weights": self._weights,
              "reference_point": self._reference_point,
          },
      )
      return tf.reduce_min(
          (transformed_multi_objectives - self._reference_point)
          * self._weights,
          axis=-1,
      )
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import abc
  import copy
  from typing import Callable, Dict, NamedTuple, Optional, Sequence, Union
  import numpy
  import six
  import tensorflow.compat.v2
label_desc: Use image node_id 2 for calling the ChebyshevScalarizer obj's underlying member method code with example usage: obj._scalarize(transformed_multi_objectives) and returns: tf