Модуль: tf.contrib.layers.feature_column
Этот API определяет абстракцию FeatureColumn.
FeatureColumns предоставляют абстракцию высокого уровня для приема и представления признаков в моделях Estimator.
FeatureColumns являются основным способом кодирования признаков для предопределенных Estimator моделей.
При использовании FeatureColumns с Estimator моделями, тип столбца признаков, который вы должны выбрать, зависит от (1) типа признака и (2) типа модели.
(1) Тип признака:
- Непрерывные признаки могут быть представлены
real_valued_column. - Категориальные признаки могут быть представлены любым столбцом
sparse_column_with_*(sparse_column_with_keys,sparse_column_with_vocabulary_file,sparse_column_with_hash_bucket,sparse_column_with_integerized_feature).
(2) Тип модели:
-
Модели глубоких нейронных сетей (
DNNClassifier,DNNRegressor).Непрерывные признаки могут быть непосредственно поданы в модели глубоких нейронных сетей.
age_column = real_valued_column("age")
Для подачи разреженных признаков в модели DNN оберните столбец с помощью
embedding_columnилиone_hot_column.one_hot_columnсоздаст плотный булевый тензор с записью для каждого возможного значения, и, следовательно, стоимость вычисления будет линейной относительно количества возможных значений по сравнению с количеством значений, которые встречаются в разреженном тензоре. Таким образом, использование "one_hot_column" рекомендуется только для признаков с небольшим количеством возможных значений. Для признаков с большим количеством возможных значений или для очень разреженных признаков рекомендуетсяembedding_column.embedded_dept_column = embedding_column( sparse_column_with_keys("department", ["math", "philosophy", ...]), dimension=10)
-
Широкие (также известные как линейные) модели (
LinearClassifier,LinearRegressor).Разреженные признаки могут быть непосредственно поданы в линейные модели. При этом используются вложения, чтобы эффективно выполнять умножение разреженных матриц.
dept_column = sparse_column_with_keys("department", ["math", "philosophy", "english"])
Рекомендуется, чтобы непрерывные признаки были поделены на интервалы перед подачей в линейные модели.
bucketized_age_column = bucketized_column( source_column=age_column, boundaries=[18, 25, 30, 35, 40, 45, 50, 55, 60, 65])
Разреженные признаки могут быть перемножены (также известны как соединенные или объединенные), чтобы сформировать нелинейности, а затем поданы в линейные модели.
cross_dept_age_column = crossed_column( columns=[department_column, bucketized_age_column], hash_bucket_size=1000)
Пример построения Estimator модели с использованием FeatureColumns:
# Определите признаки и преобразования deep_feature_columns = [age_column, embedded_dept_column] wide_feature_columns = [dept_column, bucketized_age_column, cross_dept_age_column]
# Постройте модель deep estimator = DNNClassifier( feature_columns=deep_feature_columns, hidden_units=[500, 250, 50]) estimator.train(...)
# Или постройте широкую модель estimator = LinearClassifier( feature_columns=wide_feature_columns) estimator.train(...)
# Или постройте широкую и глубокую модель! estimator = DNNLinearCombinedClassifier( linear_feature_columns=wide_feature_columns, dnn_feature_columns=deep_feature_columns, dnn_hidden_units=[500, 250, 50]) estimator.train(...)
FeatureColumns также могут быть преобразованы в общий входной слой для пользовательских моделей с использованием input_from_feature_columns в feature_column_ops.py.
Пример построения не-Estimator модели с использованием FeatureColumns:
# Построение модели с помощью слоев
deep_feature_columns = [age_column, embedded_dept_column] columns_to_tensor = parse_feature_columns_from_examples( serialized=my_data, feature_columns=deep_feature_columns) first_layer = input_from_feature_columns( columns_to_tensors=columns_to_tensor, feature_columns=deep_feature_columns) second_layer = fully_connected(first_layer, ...)
См. feature_column_ops_test для получения дополнительных примеров.
© 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/contrib/layers/feature_column