Spec-Zone.ru › TensorFlow

tf.keras.utils.FeatureSpace

Универсальный инструмент для предобработки и кодирования структурированных данных.

Наследуется от: Layer, Operation

tf.keras.utils.FeatureSpace(
    features,
    output_mode='concat',
    crosses=None,
    crossing_dim=32,
    hashing_dim=32,
    num_discretization_bins=32,
    name=None
)
Аргументы
feature_names Словарь, сопоставляющий имена ваших признаков со спецификациями их типов, например, {"my_feature": "integer_categorical"} или {"my_feature": FeatureSpace.integer_categorical()}. Полный список поддерживаемых типов см. в разделе "Доступные типы признаков" ниже.
output_mode Один из "concat" или "dict". В режиме конкатенации все признаки объединяются в один вектор. В режиме словаря FeatureSpace возвращает словарь кодированных признаков (с теми же ключами, что и в входном словаре).
crosses Список признаков, которые необходимо пересечь, например, crosses=[("feature_1", "feature_2")]. Признаки будут "пересечены" путем хэширования их комбинированного значения в вектор фиксированной длины.
crossing_dim Размер вектора по умолчанию для хэширования пересеченных признаков. По умолчанию равен 32.
hashing_dim Размер вектора по умолчанию для хэширования признаков типа "integer_hashed" и "string_hashed". По умолчанию равен 32.
num_discretization_bins Число бинов по умолчанию, используемых для дискретизации признаков типа "float_discretized". По умолчанию равно 32.

Доступные типы признаков:

Обратите внимание, что к всем признакам можно обращаться по их строковому имени, например, "integer_categorical". При использовании строкового имени используются значения аргументов по умолчанию.

# Plain float values.
FeatureSpace.float(name=None)

# Float values to be preprocessed via featurewise standardization
# (i.e. via a `keras.layers.Normalization` layer).
FeatureSpace.float_normalized(name=None)

# Float values to be preprocessed via linear rescaling
# (i.e. via a `keras.layers.Rescaling` layer).
FeatureSpace.float_rescaled(scale=1., offset=0., name=None)

# Float values to be discretized. By default, the discrete
# representation will then be one-hot encoded.
FeatureSpace.float_discretized(
    num_bins, bin_boundaries=None, output_mode="one_hot", name=None)

# Integer values to be indexed. By default, the discrete
# representation will then be one-hot encoded.
FeatureSpace.integer_categorical(
    max_tokens=None, num_oov_indices=1, output_mode="one_hot", name=None)

# String values to be indexed. By default, the discrete
# representation will then be one-hot encoded.
FeatureSpace.string_categorical(
    max_tokens=None, num_oov_indices=1, output_mode="one_hot", name=None)

# Integer values to be hashed into a fixed number of bins.
# By default, the discrete representation will then be one-hot encoded.
FeatureSpace.integer_hashed(num_bins, output_mode="one_hot", name=None)

# String values to be hashed into a fixed number of bins.
# By default, the discrete representation will then be one-hot encoded.
FeatureSpace.string_hashed(num_bins, output_mode="one_hot", name=None)

Примеры:

Базовое использование со словарем входных данных:

raw_data = {
    "float_values": [0.0, 0.1, 0.2, 0.3],
    "string_values": ["zero", "one", "two", "three"],
    "int_values": [0, 1, 2, 3],
}
dataset = tf.data.Dataset.from_tensor_slices(raw_data)

feature_space = FeatureSpace(
    features={
        "float_values": "float_normalized",
        "string_values": "string_categorical",
        "int_values": "integer_categorical",
    },
    crosses=[("string_values", "int_values")],
    output_mode="concat",
)
# Before you start using the FeatureSpace,
# you must `adapt()` it on some data.
feature_space.adapt(dataset)

# You can call the FeatureSpace on a dict of data (batched or unbatched).
output_vector = feature_space(raw_data)

Базовое использование с tf.data:

# Unlabeled data
preprocessed_ds = unlabeled_dataset.map(feature_space)

# Labeled data
preprocessed_ds = labeled_dataset.map(lambda x, y: (feature_space(x), y))

Базовое использование с функциональным API Keras:

# Retrieve a dict Keras Input objects
inputs = feature_space.get_inputs()
# Retrieve the corresponding encoded Keras tensors
encoded_features = feature_space.get_encoded_features()
# Build a Functional model
outputs = keras.layers.Dense(1, activation="sigmoid")(encoded_features)
model = keras.Model(inputs, outputs)

Настройка каждого признака или пересечения признаков:

feature_space = FeatureSpace(
    features={
        "float_values": FeatureSpace.float_normalized(),
        "string_values": FeatureSpace.string_categorical(max_tokens=10),
        "int_values": FeatureSpace.integer_categorical(max_tokens=10),
    },
    crosses=[
        FeatureSpace.cross(("string_values", "int_values"), crossing_dim=32)
    ],
    output_mode="concat",
)

Возврат словаря целочисленных кодированных признаков:

feature_space = FeatureSpace(
    features={
        "string_values": FeatureSpace.string_categorical(output_mode="int"),
        "int_values": FeatureSpace.integer_categorical(output_mode="int"),
    },
    crosses=[
        FeatureSpace.cross(
            feature_names=("string_values", "int_values"),
            crossing_dim=32,
            output_mode="int",
        )
    ],
    output_mode="dict",
)

Указание собственного слоя предобработки Keras:

# Let's say that one of the features is a short text paragraph that
# we want to encode as a vector (one vector per paragraph) via TF-IDF.
data = {
    "text": ["1st string", "2nd string", "3rd string"],
}

# There's a Keras layer for this: TextVectorization.
custom_layer = layers.TextVectorization(output_mode="tf_idf")

# We can use FeatureSpace.feature to create a custom feature
# that will use our preprocessing layer.
feature_space = FeatureSpace(
    features={
        "text": FeatureSpace.feature(
            preprocessor=custom_layer, dtype="string", output_mode="float"
        ),
    },
    output_mode="concat",
)
feature_space.adapt(tf.data.Dataset.from_tensor_slices(data))
output_vector = feature_space(data)

Получение базовых слоев предобработки Keras:

# The preprocessing layer of each feature is available in `.preprocessors`.
preprocessing_layer = feature_space.preprocessors["feature1"]

# The crossing layer of each feature cross is available in `.crossers`.
# It's an instance of keras.layers.HashedCrossing.
crossing_layer = feature_space.crossers["feature1_X_feature2"]

Сохранение и повторная загрузка FeatureSpace:

feature_space.save("featurespace.keras")
reloaded_feature_space = keras.models.load_model("featurespace.keras")
Атрибуты
input Получает тензор(ы) входных данных символической операции.

Возвращает только тензор(ы), соответствующие первому вызову операции.

output Получает тензор(ы) выходных данных слоя.

Возвращает только тензор(ы), соответствующие первому вызову операции.

Методы

adapt

Просмотреть исходный код

adapt(
    dataset
)

cross

Просмотреть исходный код

@classmethod
cross(
    feature_names, crossing_dim, output_mode='one_hot'
)

feature

Просмотреть исходный код

@classmethod
feature(
    dtype, preprocessor, output_mode
)

float

Просмотреть исходный код

@classmethod
float(
    name=None
)

float_discretized

Просмотреть исходный код

@classmethod
float_discretized(
    num_bins, bin_boundaries=None, output_mode='one_hot', name=None
)

float_normalized

Просмотреть исходный код

@classmethod
float_normalized(
    name=None
)

float_rescaled

Просмотреть исходный код

@classmethod
float_rescaled(
    scale=1.0, offset=0.0, name=None
)

from_config

Просмотреть исходный код

@classmethod
from_config(
    config
)

Создает слой из его конфигурации.

Этот метод является обратным к get_config, способный создать тот же слой из словаря конфигурации. Он не обрабатывает соединение слоев (обрабатывается Network), а также веса (обрабатывается set_weights).

Аргументы
config Словарь Python, обычно вывод метода get_config.
Возвращаемое значение
Экземпляр слоя.

get_encoded_features

Просмотреть исходный код

get_encoded_features()

get_inputs

Просмотреть исходный код

get_inputs()

integer_categorical

Просмотреть исходный код

@classmethod
integer_categorical(
    max_tokens=None,
    num_oov_indices=1,
    output_mode='one_hot',
    name=None
)

integer_hashed

Просмотреть исходный код

@classmethod
integer_hashed(
    num_bins, output_mode='one_hot', name=None
)

save

Просмотреть исходный код

save(
    filepath
)

Сохраняет экземпляр FeatureSpace в файл .keras.

Вы можете загрузить его с помощью keras.models.load_model():

feature_space.save("featurespace.keras")
reloaded_fs = keras.models.load_model("featurespace.keras")

string_categorical

Просмотреть исходный код

@classmethod
string_categorical(
    max_tokens=None,
    num_oov_indices=1,
    output_mode='one_hot',
    name=None
)

string_hashed

Просмотреть исходный код

@classmethod
string_hashed(
    num_bins, output_mode='one_hot', name=None
)

symbolic_call

Просмотреть исходный код

symbolic_call(
    *args, **kwargs
)

© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/keras/utils/FeatureSpace

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API