Какая разница между моделью Kens Tensorflow и оценщиком?

Модели Tensorflow Keras и Tensorflow Estimators способны обучать модели нейронных сетей и использовать их для прогнозирования новых данных. Это оба API высокого уровня, которые расположены поверх низкоуровневого ядра TensorFlow API. Итак, когда я должен использовать один над другим?

Ответы

Ответ 1

Фон

API-интерфейс Estimators был добавлен в Tensorflow в версии 1.1 и обеспечивает абстракцию высокого уровня в отношении операций основного уровня Tensorflow. Он работает с экземпляром Estimator, который представляет собой высокоуровневое представление TensorFlow полной модели.

Keras похож на API Estimators, поскольку он абстрагирует компоненты модели глубокого обучения, такие как слои, функции активации и оптимизаторы, чтобы упростить работу разработчиков. Это библиотека на уровне модели и не обрабатывает операции на низком уровне, что является задачей библиотеки тензорных манипуляций или бэкэндов. Keras поддерживает три бэкэнда - Tensorflow, Theano и CNTK.

Keras не был частью Tensorflow до версии 1.4.0 (2 ноября 2017 года). Теперь, когда вы используете tf.keras (или говорите о "Tensorflow Keras"), вы просто используете интерфейс Keras с бэкэндом Tensorflow для создания и обучения вашей модели.

Таким образом, API Estimator и Keras API предоставляет API высокого уровня для низкоуровневого ядра Tensorflow API, и вы можете использовать либо для обучения своей модели. Но в большинстве случаев, если вы работаете с Tensorflow, вы должны использовать API оценщиков по причинам, перечисленным ниже.

распределение

Вы можете проводить распределенное обучение на нескольких серверах с помощью API Estimators, но не с Keras API.

Из руководства Tensorflow Keras в нем говорится, что:

API Estimators используется для обучения моделей для распределенных сред.

И из Руководства Оценщиков Тензорпанов говорится, что:

Вы можете запускать модели на основе Estimator на локальном хосте или распределенной многосерверной среде без изменения вашей модели. Кроме того, вы можете запускать модели на основе Estimator на процессорах, графических процессорах или TPU без перекодирования вашей модели.

Предварительно оцененный оценщик

В то время как Keras предоставляет абстракции, которые упрощают создание моделей, вам все равно придется писать код для создания вашей модели. С оценками Tensorflow предоставляет предварительные оценки, которые являются моделями, которые вы можете использовать сразу, просто подключив гиперпараметры.

Предварительно сделанные Оценки похожи на то, как вы будете работать с scikit-learn. Например, tf.estimator.LinearRegressor из Tensorflow похож на sklearn.linear_model.LinearRegression из scikit-learn.

Интеграция с другими инструментами Tensorflow

Tensorflow предоставляет инструмент vistualzation под названием TensorBoard, который помогает визуализировать ваш график и статистику. Используя Estimator, вы можете легко сохранить резюме для визуализации с помощью Tensorboard.

Преобразование модели Keras в оценщик

Чтобы перенести модель tf.keras.estimator.model_to_estimator в Оценщик, используйте метод tf.keras.estimator.model_to_estimator.

Ответ 2

Извините за мои вопросы, если я неправильно понял. Я все еще задаюсь вопросом о разнице между Keras и оценкой TF.

  1. Для высокоуровневого API, такого как Keras, разве он не должен быть прозрачно переносимым с базовой аппаратной платформы (такой как CPU, GPU, TPU или распределенная среда)? Не следует ли заботиться об этих делах под компонентами.

  2. У Keras также есть много готовых моделей, которые вам нужно только подключить к гиперпараметрам.

  3. Keras также может включать Tensorboard и ModelCheckpoint через механизм обратного вызова. https://keras.io/callbacks/

  4. Да, есть API для преобразования из Keras в Estimator, но я не уверен насчет мотивации и абсолютной необходимости.

Ответ 3

В моем понимании, оценщик предназначен для обучения данных в больших масштабах и служит для производственных целей, потому что облачный движок ML может принимать только оценщик.

Описание ниже от одного из tenorflow doc упомянул это:

"API Estimators используется для обучения моделей для распределенных сред. Он предназначен для использования в промышленности, например, для распределенного обучения больших наборов данных, которые могут экспортировать модель для производства".