tf.estimator.classifier_parse_example_spec
| View source on GitHub |
Генерирует спецификацию парсинга для tf.parse_example, которая будет использоваться с классификаторами.
tf.estimator.classifier_parse_example_spec(
feature_columns,
label_key,
label_dtype=tf.dtypes.int64,
label_default=None,
weight_column=None
)
Если пользователи хранят данные в формате tf.Example, им необходимо вызвать tf.parse_example с правильной спецификацией признаков. Эта утилита помогает в двух основных моментах:
- Пользователям необходимо объединить спецификацию парсинга признаков с метками и весами (если таковые имеются), поскольку все они извлекаются из одного экземпляра tf.Example. Эта утилита объединяет эти спецификации.
- Трудно сопоставить ожидаемую метку классификатора, например,
DNNClassifierс соответствующей спецификацией tf.parse_example. Эта утилита кодирует её, получая необходимую информацию от пользователей (ключ, тип данных).
Пример выходной спецификации парсинга:
# Define features and transformations
feature_b = tf.feature_column.numeric_column(...)
feature_c_bucketized = tf.feature_column.bucketized_column(
tf.feature_column.numeric_column("feature_c"), ...)
feature_a_x_feature_c = tf.feature_column.crossed_column(
columns=["feature_a", feature_c_bucketized], ...)
feature_columns = [feature_b, feature_c_bucketized, feature_a_x_feature_c]
parsing_spec = tf.estimator.classifier_parse_example_spec(
feature_columns, label_key='my-label', label_dtype=tf.string)
# For the above example, classifier_parse_example_spec would return the dict:
assert parsing_spec == {
"feature_a": parsing_ops.VarLenFeature(tf.string),
"feature_b": parsing_ops.FixedLenFeature([1], dtype=tf.float32),
"feature_c": parsing_ops.FixedLenFeature([1], dtype=tf.float32)
"my-label" : parsing_ops.FixedLenFeature([1], dtype=tf.string)
}
Пример использования с классификатором:
feature_columns = # define features via tf.feature_column
estimator = DNNClassifier(
n_classes=1000,
feature_columns=feature_columns,
weight_column='example-weight',
label_vocabulary=['photos', 'keep', ...],
hidden_units=[256, 64, 16])
# This label configuration tells the classifier the following:
# * weights are retrieved with key 'example-weight'
# * label is string and can be one of the following ['photos', 'keep', ...]
# * integer id for label 'photos' is 0, 'keep' is 1, ...
# Input builders
def input_fn_train(): # Returns a tuple of features and labels.
features = tf.contrib.learn.read_keyed_batch_features(
file_pattern=train_files,
batch_size=batch_size,
# creates parsing configuration for tf.parse_example
features=tf.estimator.classifier_parse_example_spec(
feature_columns,
label_key='my-label',
label_dtype=tf.string,
weight_column='example-weight'),
reader=tf.RecordIOReader)
labels = features.pop('my-label')
return features, labels
estimator.train(input_fn=input_fn_train)
| Аргументы | |
|---|---|
feature_columns | Итерируемый объект, содержащий все столбцы признаков. Все элементы должны быть экземплярами классов, производных от FeatureColumn. |
label_key | Строка, идентифицирующая метку. Это означает, что tf.Example хранит метки с этим ключом. |
label_dtype | tf.dtype определяет тип меток. По умолчанию это tf.int64. Если пользователь определяет label_vocabulary, это должно быть установлено как tf.string. Метки tf.float32 поддерживаются только для бинарной классификации. |
label_default | используется в качестве метки, если label_key не существует в данном tf.Example. Пример использования: допустим, label_key это 'clicked', и tf.Example содержит данные clicked только для положительных примеров в следующем формате key:clicked, value:1. Это означает, что если нет данных с ключом 'clicked', это должно считаться отрицательным примером, установив label_deafault=0. Тип этого значения должен быть совместим с label_dtype. |
weight_column | Строка или NumericColumn, созданный с помощью tf.feature_column.numeric_column, определяющий столбец признаков, представляющий веса. Он используется для уменьшения веса или повышения значимости примеров во время обучения. Он будет умножен на потери примера. Если это строка, она используется как ключ для извлечения тензора весов из features. Если это NumericColumn, сырой тензор извлекается по ключу weight_column.key, затем к нему применяется weight_column.normalizer_fn для получения тензора весов. |
| Возвращает | |
|---|---|
Словарь, сопоставляющий каждый ключ признака со значением FixedLenFeature или VarLenFeature. |
| Исключения | |
|---|---|
ValueError | Если метка используется в feature_columns. |
ValueError | Если weight_column используется в feature_columns. |
ValueError | Если любой из заданных feature_columns не является экземпляром _FeatureColumn. |
ValueError | Если weight_column не является экземпляром NumericColumn. |
ValueError | если label_key равен None. |
© 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/versions/r2.9/api_docs/python/tf/estimator/classifier_parse_example_spec