tf.compat.v1.estimator.experimental.KMeans
Оценщик для кластеризации K-средних.
Наследуется от: Estimator
tf.compat.v1.estimator.experimental.KMeans(
num_clusters, model_dir=None, initial_clusters=RANDOM_INIT,
distance_metric=SQUARED_EUCLIDEAN_DISTANCE, seed=None, use_mini_batch=True,
mini_batch_steps_per_iteration=1, kmeans_plus_plus_num_retries=2,
relative_tolerance=None, config=None, feature_columns=None
)
Пример:
import numpy as np
import tensorflow as tf
num_points = 100
dimensions = 2
points = np.random.uniform(0, 1000, [num_points, dimensions])
def input_fn():
return tf.compat.v1.train.limit_epochs(
tf.convert_to_tensor(points, dtype=tf.float32), num_epochs=1)
num_clusters = 5
kmeans = tf.compat.v1.estimator.experimental.KMeans(
num_clusters=num_clusters, use_mini_batch=False)
# train
num_iterations = 10
previous_centers = None
for _ in xrange(num_iterations):
kmeans.train(input_fn)
cluster_centers = kmeans.cluster_centers()
if previous_centers is not None:
print 'delta:', cluster_centers - previous_centers
previous_centers = cluster_centers
print 'score:', kmeans.score(input_fn)
print 'cluster centers:', cluster_centers
# map the input points to their clusters
cluster_indices = list(kmeans.predict_cluster_index(input_fn))
for i, point in enumerate(points):
cluster_index = cluster_indices[i]
center = cluster_centers[cluster_index]
print 'point:', point, 'is in cluster', cluster_index, 'centered at', center
Сохранённые SavedModel методом export_saved_model не включают центры кластеров. Однако центры кластеров можно получить из последнего сохранённого контрольного пункта во время обучения. В частности,
kmeans.cluster_centers()
эквивалентно
tf.train.load_variable(
kmeans.model_dir, KMeansClustering.CLUSTER_CENTERS_VAR_NAME)
| Аргументы | |
|---|---|
num_clusters | Целочисленный тензор, определяющий количество кластеров. Этот аргумент игнорируется, если initial_clusters является тензором или массивом NumPy. |
model_dir | Директория для сохранения результатов модели и лог-файлов. |
initial_clusters | Определяет способ выбора начальных центров кластеров. Один из следующих: * тензор или массив NumPy с начальными центрами кластеров. * вызываемая функция f(inputs, k) , которая выбирает и возвращает до k центров из входной партии. f свободна возвращать любое количество центров от 0 до k. Она будет вызываться для последующих входных партий по мере необходимости, пока все num_clusters центры не будут выбраны.
|
distance_metric | Метрика расстояния, используемая для кластеризации. Одна из следующих: KMeansClustering.SQUARED_EUCLIDEAN_DISTANCE: Евклидово расстояние между векторами u и v определяется как \(||u - v||_2\), что является квадратным корнем из суммы квадратов абсолютных разностей элементов.KMeansClustering.COSINE_DISTANCE: Косинусное расстояние между векторами u и v определяется как \(1 - (u . v) / (||u||_2 ||v||_2)\). |
seed | Целое число Python. Семена PRNG, используемые для инициализации центров. |
use_mini_batch | Булево значение, указывающее, использовать ли алгоритм mini-batch k-средних. См. объяснение выше. |
mini_batch_steps_per_iteration | Количество шагов после которого обновлённые центры кластеров синхронизируются с основной копией. Используется только если use_mini_batch=True. См. объяснение выше. |
kmeans_plus_plus_num_retries | Для каждой точки, взятой для инициализации kmeans++, этот параметр определяет количество дополнительных точек, которые нужно взять из текущего распределения, прежде чем выбрать лучшую. Если задано отрицательное значение, используется эвристика для выборки O(log(num_to_sample)) дополнительных точек. Используется только если initial_clusters=KMeansClustering.KMEANS_PLUS_PLUS_INIT. |
relative_tolerance | Относительная погрешность изменения функции потерь между итерациями. Остановка обучения, если значение функции потерь изменится меньше этого значения. Может не работать корректно, если use_mini_batch=True. |
config | См. tf.estimator.Estimator. |
feature_columns | Необязательное итерируемое множество, содержащее все используемые моделью столбцы признаков. Все элементы множества должны быть экземплярами столбцов признаков, которые можно передать в tf.feature_column.input_layer. Если None, будут использоваться все признаки. |
| Исключения | |
|---|---|
ValueError | Некорректный аргумент был передан в initial_clusters или distance_metric. |
| Атрибуты | |
|---|---|
config | |
model_dir | |
model_fn | Возвращает model_fn , который связан с self.params. |
params | |
Методы
cluster_centers
cluster_centers()
Возвращает центры кластеров.
eval_dir
eval_dir(
name=None
)
Показывает имя каталога, куда записываются метрики оценки.
| Аргументы | |
|---|---|
name | Название оценки, если необходимо выполнить несколько оценок на разных наборах данных, например, на обучающих и тестовых данных. Метрики для разных оценок сохраняются в отдельных папках и отображаются отдельно в tensorboard. |
| Возвращает | |
|---|---|
| Строка, представляющая путь к каталогу, содержащему метрики оценки. |
evaluate
evaluate(
input_fn, steps=None, hooks=None, checkpoint_path=None, name=None
)
Оценивает модель на данных оценки input_fn.
На каждом шаге вызывает input_fn, которая возвращает одну партию данных. Оценка выполняется до:
-
stepsпартий обработаны, или -
input_fnвозникает исключение конца входных данных (tf.errors.OutOfRangeErrorилиStopIteration).
| Аргументы | |
|---|---|
input_fn | Функция, которая строит входные данные для оценки. См. Предопределённые оценщики для получения дополнительной информации. Функция должна построить и вернуть одну из следующих:
|
steps | Количество шагов, на которых оценивается модель. Если None, оценка выполняется до тех пор, пока input_fn не вызовет исключение конца входных данных. |
hooks | Список экземпляров подкласса tf.train.SessionRunHook . Используется для обратных вызовов внутри вызова оценки. |
checkpoint_path | Путь к конкретному контрольному пункту для оценки. Если None, используется последний контрольный пункт в model_dir . Если в model_dir нет контрольных пунктов, оценка выполняется с вновь инициализированными Variables вместо тех, которые восстановлены из контрольного пункта. |
name | Название оценки, если необходимо выполнить несколько оценок на разных наборах данных, например, на обучающих и тестовых данных. Метрики для разных оценок сохраняются в отдельных папках и отображаются отдельно в tensorboard. |
| Возвращает | |
|---|---|
Словарь, содержащий метрики оценки, указанные в model_fn по имени, а также запись global_step , которая содержит значение глобального шага, на котором была выполнена данная оценка. Для предопределённых оценщиков словарь содержит loss (средняя потеря на мини-парттию) и average_loss (средняя потеря на образец). Предопределённые классификаторы также возвращают accuracy. Предопределённые регрессоры также возвращают label/mean и prediction/mean. |
| Исключения | |
|---|---|
ValueError | Если steps <= 0. |
experimental_export_all_saved_models
experimental_export_all_saved_models(
export_dir_base, input_receiver_fn_map, assets_extra=None, as_text=False,
checkpoint_path=None
)
Экспортирует SavedModel с tf.MetaGraphDefs для каждого запрошенного режима.
Для каждого режима, переданного через input_receiver_fn_map, этот метод строит новую схему, вызывая input_receiver_fn для получения признаков и меток Tensor . Затем этот метод вызывает Estimator's model_fn в переданном режиме, чтобы сгенерировать схему модели на основе этих признаков и меток, и восстанавливает заданный контрольный пункт (или, если его нет, последний контрольный пункт) в схему. Только один из режимов используется для сохранения переменных в SavedModel (порядок предпочтения: tf.estimator.ModeKeys.TRAIN, tf.estimator.ModeKeys.EVAL, затем tf.estimator.ModeKeys.PREDICT), таким образом, до трёх tf.MetaGraphDefs сохраняются с одним набором переменных в одной директории SavedModel.
Для переменных и tf.MetaGraphDefs, создаётся временная директория экспорта в export_dir_base, и записывается SavedModel в неё, содержащий tf.MetaGraphDef для данного режима и соответствующих сигнатур.
Для прогнозирования экспортированный MetaGraphDef предоставит по одному SignatureDef для каждого элемента словаря export_outputs, возвращённого функцией model_fn, используя те же ключи. Один из этих ключей всегда tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY, указывающий, какая сигнатура будет использована, если при запросе на обслуживание сигнатура не указана. Для каждой сигнатуры выходные данные предоставляются соответствующими объектами tf.estimator.export.ExportOutput, а входные данные всегда — получателями входных данных, предоставленными serving_input_receiver_fn.
Для обучения и оценки train_op хранится в дополнительном наборе, а значения потерь, метрики и прогнозы включаются в SignatureDef для рассматриваемого режима.
Дополнительные ресурсы могут быть записаны в SavedModel с помощью аргумента assets_extra. Это должен быть словарь, где каждый ключ задаёт путь назначения (включая имя файла) относительно каталога assets.extra. Соответствующее значение задаёт полный путь к исходному файлу, который нужно скопировать. Например, простой случай копирования одного файла без переименования задаётся как {'my_asset_file.txt': '/path/to/my_asset_file.txt'}.
| Аргументы | |
|---|---|
export_dir_base | Строка, содержащая каталог, в котором будут создаваться временные подкаталоги с экспортированными SavedModel. |
input_receiver_fn_map | Словарь сопоставлений ключей tf.estimator.ModeKeys с input_receiver_fn отображениями, где input_receiver_fn — функция, не принимающая аргументов и возвращающая соответствующий подкласс InputReceiver. |
assets_extra | Словарь, определяющий, как заполнить каталог assets.extra в экспортированном SavedModel, или None в случае отсутствия дополнительных ресурсов. |
as_text | Нужно ли записывать протокол SavedModel в текстовом формате. |
checkpoint_path | Путь к точке контрольной проверки для экспорта. Если None (по умолчанию), выбирается самая последняя точка контрольной проверки, найденная в каталоге модели. |
| Возвращаемые значения | |
|---|---|
| Путь к экспортированному каталогу в виде объекта типа bytes. |
| Исключения | |
|---|---|
ValueError | если какой-либо input_receiver_fn имеет значение None, не предоставлены export_outputs или не найдена точка контрольной проверки. |
export_saved_model
export_saved_model(
export_dir_base, serving_input_receiver_fn, assets_extra=None, as_text=False,
checkpoint_path=None, experimental_mode=ModeKeys.PREDICT
)
Экспортирует граф вывода в SavedModel в указанный каталог.
Подробное руководство см. в SavedModel от Estimators.
Этот метод строит новую графу, сначала вызвав serving_input_receiver_fn для получения признаков Tensor, а затем вызвав Estimator этого model_fn для генерации графа модели на основе этих признаков. Он восстанавливает заданную точку контрольной проверки (или, если её нет, самую последнюю) в эту графу в новой сессии. Наконец, он создаёт временный каталог экспорта в каталоге export_dir_base и записывает в него SavedModel с одной сохранённой tf.MetaGraphDef из этой сессии.
Экспортированный MetaGraphDef предоставит по одному SignatureDef для каждого элемента словаря export_outputs, возвращённого функцией model_fn, используя те же ключи. Один из этих ключей всегда tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY, указывающий, какая сигнатура будет использована, если при запросе на обслуживание сигнатура не указана. Для каждой сигнатуры выходные данные предоставляются соответствующими объектами tf.estimator.export.ExportOutput, а входные данные всегда — получателями входных данных, предоставленными serving_input_receiver_fn.
Дополнительные ресурсы могут быть записаны в SavedModel с помощью аргумента assets_extra. Это должен быть словарь, где каждый ключ задаёт путь назначения (включая имя файла) относительно каталога assets.extra. Соответствующее значение задаёт полный путь к исходному файлу, который нужно скопировать. Например, простой случай копирования одного файла без переименования задаётся как {'my_asset_file.txt': '/path/to/my_asset_file.txt'}.
Параметр experimental_mode может быть использован для экспорта отдельной обучающей/оценочной/прогнозной графы как SavedModel. См. experimental_export_all_saved_models для получения полной документации.
| Аргументы | |
|---|---|
export_dir_base | Строка, содержащая каталог, в котором будут создаваться временные подкаталоги с экспортированными SavedModel. |
serving_input_receiver_fn | Функция, не принимающая аргументов и возвращающая tf.estimator.export.ServingInputReceiver или tf.estimator.export.TensorServingInputReceiver. |
assets_extra | Словарь, определяющий, как заполнить каталог assets.extra в экспортированном SavedModel, или None в случае отсутствия дополнительных ресурсов. |
as_text | Нужно ли записывать протокол SavedModel в текстовом формате. |
checkpoint_path | Путь к точке контрольной проверки для экспорта. Если None (по умолчанию), выбирается самая последняя точка контрольной проверки, найденная в каталоге модели. |
experimental_mode | Значение tf.estimator.ModeKeys, указывающее, какой режим будет экспортирован. Обратите внимание, что эта функция экспериментальная. |
| Возвращаемые значения | |
|---|---|
| Путь к экспортированному каталогу в виде объекта типа bytes. |
| Исключения | |
|---|---|
ValueError | если не предоставлен serving_input_receiver_fn, не предоставлены export_outputs или не найдена точка контрольной проверки. |
export_savedmodel
export_savedmodel(
export_dir_base, serving_input_receiver_fn, assets_extra=None, as_text=False,
checkpoint_path=None, strip_default_attrs=False
)
Экспортирует граф вывода в SavedModel в указанный каталог. (устарело)
Подробное руководство см. в SavedModel от Estimators.
Этот метод строит новую графу, сначала вызвав serving_input_receiver_fn для получения признаков Tensor, а затем вызвав Estimator этого model_fn для генерации графа модели на основе этих признаков. Он восстанавливает заданную точку контрольной проверки (или, если её нет, самую последнюю) в эту графу в новой сессии. Наконец, он создаёт временный каталог экспорта в каталоге export_dir_base и записывает в него SavedModel с одной сохранённой tf.MetaGraphDef из этой сессии.
Экспортированный MetaGraphDef предоставит по одному SignatureDef для каждого элемента словаря export_outputs, возвращённого функцией model_fn, используя те же ключи. Один из этих ключей всегда tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY, указывающий, какая сигнатура будет использована, если при запросе на обслуживание сигнатура не указана. Для каждой сигнатуры выходные данные предоставляются соответствующими объектами tf.estimator.export.ExportOutput, а входные данные всегда — получателями входных данных, предоставленными serving_input_receiver_fn.
Дополнительные ресурсы могут быть записаны в SavedModel с помощью аргумента assets_extra. Это должен быть словарь, где каждый ключ задаёт путь назначения (включая имя файла) относительно каталога assets.extra. Соответствующее значение задаёт полный путь к исходному файлу, который нужно скопировать. Например, простой случай копирования одного файла без переименования задаётся как {'my_asset_file.txt': '/path/to/my_asset_file.txt'}.
| Аргументы | |
|---|---|
export_dir_base | Строка, содержащая каталог, в котором будут создаваться временные подкаталоги с экспортированными SavedModel. |
serving_input_receiver_fn | Функция, не принимающая аргументов и возвращающая tf.estimator.export.ServingInputReceiver или tf.estimator.export.TensorServingInputReceiver. |
assets_extra | Словарь, определяющий, как заполнить каталог assets.extra в экспортированном SavedModel, или None в случае отсутствия дополнительных ресурсов. |
as_text | Нужно ли записывать протокол SavedModel в текстовом формате. |
checkpoint_path | Путь к точке контрольной проверки для экспорта. Если None (по умолчанию), выбирается самая последняя точка контрольной проверки, найденная в каталоге модели. |
strip_default_attrs | Логическое значение. Если True, атрибуты с значениями по умолчанию будут удалены из NodeDef. Для получения подробного руководства см. Удаление атрибутов со значениями по умолчанию. |
| Возвращаемые значения | |
|---|---|
| Путь к экспортированному каталогу в виде объекта типа bytes. |
| Исключения | |
|---|---|
ValueError | если не предоставлен serving_input_receiver_fn, не предоставлены export_outputs или не найдена точка контрольной проверки. |
get_variable_names
get_variable_names()
Возвращает список всех имён переменных в этой модели.
| Возвращает | |
|---|---|
| Список имён. |
| Возбуждает | |
|---|---|
ValueError | Если Estimator ещё не создал контрольную точку. |
get_variable_value
get_variable_value(
name
)
Возвращает значение переменной, заданной именем.
| Аргументы | |
|---|---|
name | Строка или список строк, имя тензора. |
| Возвращает | |
|---|---|
| Массив NumPy - значение тензора. |
| Возбуждает | |
|---|---|
ValueError | Если Estimator ещё не создал контрольную точку. |
latest_checkpoint
latest_checkpoint()
Находит имя файла последней сохранённой контрольной точки в model_dir.
| Возвращает | |
|---|---|
Полный путь к последней контрольной точке или None если контрольная точка не найдена. |
predict
predict(
input_fn, predict_keys=None, hooks=None, checkpoint_path=None,
yield_single_examples=True
)
Возвращает предсказания для заданных признаков.
Обратите внимание, что интерлейсинг двух выходов predict не работает. См.: issue/20506
| Аргументы | |
|---|---|
input_fn | Функция, которая строит признаки. Предсказание продолжается до тех пор, пока input_fn не поднимет исключение конца ввода (tf.errors.OutOfRangeError или StopIteration). Подробнее см. Предопределенные оценщики. Функция должна построить и вернуть одно из следующего:
|
predict_keys | Список str, имя ключей для предсказания. Используется, если tf.estimator.EstimatorSpec.predictions является dict. Если predict_keys используется, остальная часть предсказаний будет отфильтрована из словаря. Если None, возвращает всё. |
hooks | Список экземпляров подклассов tf.train.SessionRunHook. Используется для обратных вызовов внутри вызова предсказания. |
checkpoint_path | Путь к определенной контрольной точке для предсказания. Если None, используется последняя контрольная точка в model_dir . Если в model_dir нет контрольных точек, предсказание выполняется с вновь инициализированными Variables вместо восстановленных из контрольной точки. |
yield_single_examples | Если False, возвращает всю партию, как возвращает model_fn вместо разбиения партии на отдельные элементы. Это полезно, если model_fn возвращает некоторые тензоры, первая размерность которых не равна размеру партии. |
Возвращает:
Вычисленные значения predictions тензоров.
| Возбуждает | |
|---|---|
ValueError | Если длина партии предсказаний не совпадает и yield_single_examples равно True. |
ValueError | Если есть конфликт между predict_keys и predictions. Например, если predict_keys не None , но tf.estimator.EstimatorSpec.predictions не dict. |
predict_cluster_index
predict_cluster_index(
input_fn
)
Находит индекс ближайшего центра кластера к каждой точке ввода.
| Аргументы | |
|---|---|
input_fn | Точки ввода. См. tf.estimator.Estimator.predict. |
Возвращает:
Индекс ближайшего центра кластера для каждой точки ввода.
score
score(
input_fn
)
Возвращает сумму квадратов расстояний до ближайших кластеров.
Обратите внимание, что эта функция отличается от соответствующей функции в sklearn, которая возвращает отрицательную сумму.
| Аргументы | |
|---|---|
input_fn | Точки ввода. См. tf.estimator.Estimator.evaluate. Извлекается только одна партия. |
| Возвращает | |
|---|---|
| Сумма квадратов расстояний от каждой точки в первой партии входных данных до ближайшего центра кластера. |
train
train(
input_fn, hooks=None, steps=None, max_steps=None, saving_listeners=None
)
Обучает модель с использованием обучающих данных input_fn.
| Аргументы | |
|---|---|
input_fn | Функция, предоставляющая входные данные для обучения в виде мини-пакетов. Подробнее см. Предопределенные оценщики. Функция должна построить и вернуть одно из следующего:
|
hooks | Список экземпляров подклассов tf.train.SessionRunHook. Используется для обратных вызовов внутри цикла обучения. |
steps | Количество шагов для обучения модели. Если None, обучаться бесконечно или до тех пор, пока input_fn не сгенерирует ошибку tf.errors.OutOfRange или исключение StopIteration. steps работает инкрементально. Если вы вызываете train(steps=10) два раза, обучение происходит в общей сложности 20 шагами. Если OutOfRange или StopIteration произойдёт посредине, обучение остановится до 20 шагов. Если вы не хотите иметь инкрементальное поведение, установите max_steps вместо. Если установлено, max_steps должно быть None. |
max_steps | Общее количество шагов для обучения модели. Если None, обучаться бесконечно или до тех пор, пока input_fn не сгенерирует ошибку tf.errors.OutOfRange или исключение StopIteration. Если установлено, steps должно быть None. Если OutOfRange или StopIteration произойдёт посредине, обучение остановится до max_steps шагов. Два вызова train(steps=100) означают 200 итераций обучения. С другой стороны, два вызова train(max_steps=100) означают, что второй вызов не выполнит ни одной итерации, так как первый вызов выполнил все 100 шагов. |
saving_listeners | Список объектов CheckpointSaverListener. Используется для обратных вызовов, выполняемых непосредственно перед или после сохранения контрольной точки. |
| Возвращает | |
|---|---|
self, для цепочки вызовов. |
| Возбуждает | |
|---|---|
ValueError | Если оба steps и max_steps не None. |
ValueError | Если любой из steps или max_steps <= 0. |
transform
transform(
input_fn
)
Преобразует каждую входную точку в расстояния до всех центров кластеров.
Обратите внимание, что если distance_metric=KMeansClustering.SQUARED_EUCLIDEAN_DISTANCE, эта функция возвращает квадрат расстояния по Евклиду, в то время как соответствующая функция sklearn возвращает расстояние по Евклиду.
| Аргументы | |
|---|---|
input_fn | Входные точки. См. tf.estimator.Estimator.predict. |
Возвращаемое значение:
Расстояния от каждой входной точки до каждого центра кластера.
Переменные класса
-
ALL_DISTANCES = 'all_distances' -
CLUSTER_CENTERS_VAR_NAME = 'clusters' -
CLUSTER_INDEX = 'cluster_index' -
COSINE_DISTANCE = 'cosine' -
KMEANS_PLUS_PLUS_INIT = 'kmeans_plus_plus' -
RANDOM_INIT = 'random' -
SCORE = 'score' -
SQUARED_EUCLIDEAN_DISTANCE = 'squared_euclidean'
© 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/r2.3/api_docs/python/tf/compat/v1/estimator/experimental/KMeans