Поделиться через


TensorFlowEstimator Класс

Определение

Используется TensorFlowTransformer в следующих двух сценариях.

  1. Оценка с предварительно обученной моделью TensorFlow . В этом режиме преобразование извлекает значения скрытых слоев из предварительно обученной модели Tensorflow и использует выходные данные в качестве признаков в конвейере ML.Net.
  2. Переобучение модели TensorFlow . В этом режиме преобразование переобучение модели TensorFlow с помощью пользовательских данных, передаваемых через конвейер ML.Net. После обучения модели выходные данные можно использовать в качестве функций для оценки.
public sealed class TensorFlowEstimator : Microsoft.ML.IEstimator<Microsoft.ML.Transforms.TensorFlowTransformer>
type TensorFlowEstimator = class
    interface IEstimator<TensorFlowTransformer>
Public NotInheritable Class TensorFlowEstimator
Implements IEstimator(Of TensorFlowTransformer)
Наследование
TensorFlowEstimator
Реализации

Комментарии

TensorFlowTransform извлекает указанные выходные данные с помощью предварительно обученной модели Tensorflow . При необходимости он может дополнительно переобучить модель TensorFlow для пользовательских данных для настройки параметров модели для пользовательских данных (также известного как Transfer Learning).

Для оценки преобразование принимает в качестве входных данных предварительно обученную модель Tensorflow, имена входных узлов и имена выходных узлов, значения которых требуется извлечь. Для повторного обучения преобразованию также требуются связанные с обучением параметры, такие как имена операций оптимизации в графе TensorFlow, имя операции скорости обучения в графе и его значение, имя операций в графе для вычисления потери и метрики производительности и т. д.

Для этого преобразования требуется установить nuget Microsoft.ML.TensorFlow . TensorFlowTransform имеет следующие предположения относительно входных, выходных данных, обработки данных и переобучения.

  1. Для входной модели в настоящее время TensorFlowTransform поддерживает как формат замороженных моделей , так и формат SavedModel . Однако повторное обучение модели возможно только для формата SavedModel . Формат контрольных точек в настоящее время не поддерживается ни для оценки, ни для повторного обучения из-за отсутствия поддержки TensorFlow C-API для загрузки.
  2. Преобразование поддерживает оценку только одного примера за раз. Однако повторное обучение может выполняться в пакетах.
  3. Сценарии расширенной передачи обучения и тонкой настройки (например, добавление дополнительных слоев в сеть, изменение формы входных данных, замораживание слоев, которые не нужно обновлять во время повторного обучения и т. д.), в настоящее время невозможно из-за отсутствия поддержки операций с сетью или графом в модели с помощью TensorFlow C-API.
  4. Имя входных столбцов должно совпадать с именем входных данных в модели TensorFlow.
  5. Имя каждого выходного столбца должно соответствовать одной из операций в графе TensorFlow.
  6. В настоящее время double, float, long, int, short, sbyte, ulong, uint, ushort, byte и bool являются допустимыми типами данных для ввода и вывода.
  7. После успешного выполнения преобразование вводит новый столбец в IDataView соответствии с каждым указанным выходным столбцом.

Входные и выходные данные модели TensorFlow можно получить с помощью GetModelSchema() средств или summarize_graph .

Методы

Fit(IDataView)

Тренирует и возвращает .TensorFlowTransformer

GetOutputSchema(SchemaShape)

Возвращает схему SchemaShape , которая будет производиться преобразователем. Используется для распространения и проверки схемы в конвейере.

Методы расширения

AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment)

Добавьте "контрольную точку кэширования" в цепочку оценщика. Это гарантирует, что подчиненные оценщики будут обучены на основе кэшированных данных. Рекомендуется использовать контрольную точку кэширования перед обучением, которые принимают несколько данных.

WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>)

Учитывая оценщик, верните объект-оболочку, который будет вызывать делегат один раз Fit(IDataView) . Часто важно, чтобы оценщик возвращал сведения о том, что было положено, поэтому Fit(IDataView) метод возвращает специально типизированный объект, а не просто общий ITransformer. Однако в то же время часто IEstimator<TTransformer> формируются в конвейеры со многими объектами, поэтому нам может потребоваться создать цепочку оценщиков, где EstimatorChain<TLastTransformer> оценщик, для которого мы хотим получить преобразователь, похоронен где-то в этой цепочке. В этом сценарии мы можем подключить делегат, который будет вызываться после вызова соответствия.

Применяется к