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
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
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()))
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))
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
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()))
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)