tf.compat.v2.estimator.classifier_parse_example_spec
Генерирует спецификацию разбора для tf.parse_example, предназначенную для использования с классификаторами.
tf.compat.v2.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.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. |
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/compat/v2/estimator/classifier_parse_example_spec