Esempio n. 1
0
 def get_config(self):
     config = super().get_config()
     config.update({
         'axis': self.axis,
         'mean': utils.listify_tensors(self.input_mean),
         'variance': utils.listify_tensors(self.input_variance),
     })
     return config
Esempio n. 2
0
 def get_config(self):
     config = super().get_config()
     config.update({
         "axis": self.axis,
         "mean": utils.listify_tensors(self.input_mean),
         "variance": utils.listify_tensors(self.input_variance),
     })
     return config
Esempio n. 3
0
    def get_config(self):
        config = {
            "invert": self.invert,
            "max_tokens": self.max_tokens,
            "num_oov_indices": self.num_oov_indices,
            "oov_token": self.oov_token,
            "mask_token": self.mask_token,
            "output_mode": self.output_mode,
            "pad_to_max_tokens": self.pad_to_max_tokens,
            "vocabulary": utils.listify_tensors(self.input_vocabulary),
            "idf_weights": utils.listify_tensors(self.input_idf_weights),
        }

        base_config = super().get_config()
        return dict(list(base_config.items()) + list(config.items()))
Esempio n. 4
0
    def finalize_state(self):
        if self.input_bin_boundaries is not None or not self.built:
            return

        # The bucketize op only support list boundaries.
        self.bin_boundaries = utils.listify_tensors(
            get_bin_boundaries(self.summary, self.num_bins))
Esempio n. 5
0
 def __init__(self,
              bin_boundaries=None,
              num_bins=None,
              epsilon=0.01,
              **kwargs):
     # bins is a deprecated arg for setting bin_boundaries or num_bins that still
     # has some usage.
     if "bins" in kwargs:
         logging.warning(
             "bins is deprecated, please use bin_boundaries or num_bins instead."
         )
         if isinstance(kwargs["bins"], int) and num_bins is None:
             num_bins = kwargs["bins"]
         elif bin_boundaries is None:
             bin_boundaries = kwargs["bins"]
         del kwargs["bins"]
     super().__init__(**kwargs)
     base_preprocessing_layer.keras_kpl_gauge.get_cell(
         "Discretization").set(True)
     if num_bins is not None and num_bins < 0:
         raise ValueError("`num_bins` must be greater than or equal to 0. "
                          "You passed `num_bins={}`".format(num_bins))
     if num_bins is not None and bin_boundaries is not None:
         raise ValueError(
             "Both `num_bins` and `bin_boundaries` should not be "
             "set. You passed `num_bins={}` and "
             "`bin_boundaries={}`".format(num_bins, bin_boundaries))
     bin_boundaries = utils.listify_tensors(bin_boundaries)
     self.input_bin_boundaries = bin_boundaries
     self.bin_boundaries = bin_boundaries if bin_boundaries is not None else []
     self.num_bins = num_bins
     self.epsilon = epsilon
Esempio n. 6
0
 def get_config(self):
     vocab = self._lookup_layer.input_vocabulary
     idf_weights = self._lookup_layer.input_idf_weights
     config = {
         "max_tokens": self._lookup_layer.max_tokens,
         "standardize": self._standardize,
         "split": self._split,
         "ngrams": self._ngrams_arg,
         "output_mode": self._output_mode,
         "output_sequence_length": self._output_sequence_length,
         "pad_to_max_tokens": self._lookup_layer.pad_to_max_tokens,
         "sparse": self._lookup_layer.sparse,
         "ragged": self._ragged,
         "vocabulary": utils.listify_tensors(vocab),
         "idf_weights": utils.listify_tensors(idf_weights),
     }
     base_config = super(TextVectorization, self).get_config()
     return dict(list(base_config.items()) + list(config.items()))
Esempio n. 7
0
    def __init__(
        self,
        bin_boundaries=None,
        num_bins=None,
        epsilon=0.01,
        output_mode="int",
        sparse=False,
        **kwargs,
    ):
        # bins is a deprecated arg for setting bin_boundaries or num_bins that still
        # has some usage.
        if "bins" in kwargs:
            logging.warning(
                "bins is deprecated, please use bin_boundaries or num_bins instead."
            )
            if isinstance(kwargs["bins"], int) and num_bins is None:
                num_bins = kwargs["bins"]
            elif bin_boundaries is None:
                bin_boundaries = kwargs["bins"]
            del kwargs["bins"]

        # By default, output int64 when output_mode='int' and floats otherwise.
        if "dtype" not in kwargs or kwargs["dtype"] is None:
            kwargs["dtype"] = (
                tf.int64 if output_mode == INT else backend.floatx()
            )
        elif (
            output_mode == "int" and not tf.as_dtype(kwargs["dtype"]).is_integer
        ):
            # Compat for when dtype was always floating and ignored by the layer.
            kwargs["dtype"] = tf.int64

        super().__init__(**kwargs)
        base_preprocessing_layer.keras_kpl_gauge.get_cell("Discretization").set(
            True
        )

        # Check dtype only after base layer parses it; dtype parsing is complex.
        if (
            output_mode == INT
            and not tf.as_dtype(self.compute_dtype).is_integer
        ):
            input_dtype = kwargs["dtype"]
            raise ValueError(
                "When `output_mode='int'`, `dtype` should be an integer "
                f"type. Received: dtype={input_dtype}"
            )

        # 'output_mode' must be one of (INT, ONE_HOT, MULTI_HOT, COUNT)
        layer_utils.validate_string_arg(
            output_mode,
            allowable_strings=(INT, ONE_HOT, MULTI_HOT, COUNT),
            layer_name=self.__class__.__name__,
            arg_name="output_mode",
        )

        if sparse and output_mode == INT:
            raise ValueError(
                f"`sparse` may only be true if `output_mode` is "
                f"`'one_hot'`, `'multi_hot'`, or `'count'`. "
                f"Received: sparse={sparse} and "
                f"output_mode={output_mode}"
            )

        if num_bins is not None and num_bins < 0:
            raise ValueError(
                "`num_bins` must be greater than or equal to 0. "
                "You passed `num_bins={}`".format(num_bins)
            )
        if num_bins is not None and bin_boundaries is not None:
            raise ValueError(
                "Both `num_bins` and `bin_boundaries` should not be "
                "set. You passed `num_bins={}` and "
                "`bin_boundaries={}`".format(num_bins, bin_boundaries)
            )
        bin_boundaries = utils.listify_tensors(bin_boundaries)
        self.input_bin_boundaries = bin_boundaries
        self.bin_boundaries = (
            bin_boundaries if bin_boundaries is not None else []
        )
        self.num_bins = num_bins
        self.epsilon = epsilon
        self.output_mode = output_mode
        self.sparse = sparse
 def test_numpy_input(self):
     inputs = np.array([0, 1, 2, 3, 4])
     outputs = preprocessing_utils.listify_tensors(inputs)
     self.assertAllEqual([0, 1, 2, 3, 4], outputs)
     self.assertIsInstance(outputs, list)
 def test_tensor_input(self):
     inputs = tf.constant([0, 1, 2, 3, 4])
     outputs = preprocessing_utils.listify_tensors(inputs)
     self.assertAllEqual([0, 1, 2, 3, 4], outputs)
     self.assertIsInstance(outputs, list)