После создания модели нейронной сети в TensorFlow вы должны знать, как скомпилировать модель нейронной сети. Этот шаг похож на подготовку модели тензорного потока к обучению.
Здесь я объясню, как настроить модель TensorFlow с использованием различных компонентов, что поможет модели изучить и оценить ее производительность.
Вы познакомитесь с некоторыми реальными аналогиями, связанными с компонентами, используемыми в модели тензорного потока. Понимание этих аналогий прояснит ваши представления о том, как модель TensorFlow обучается на основе набора данных.
Что означает компиляция нейронной сети в Tensorflow?
После того как вы создали свою модель, например последовательную модель, вам необходимо настроить ее для целей обучения. Здесь компиляция означает настройку компонентов модели, необходимых для обучения.
Эти компоненты включают оптимизатор, функции потерь и метрики оценки. Позвольте мне объяснить эти понятия простым языком.
Представьте себе, что у владельца домашнего животного есть друг, и этот друг не умеет отличать собак от кошек. Здесь задача владельца домашнего животного – научить своего друга правильно распознавать и классифицировать собак и кошек.
Оптимизатор: Это своего рода набор методов дрессировки, которые владелец домашнего животного может научить своему другу. Эти методы могут включать показ различных изображений собак и кошек, объяснение их особенностей и корректировку процесса обучения в зависимости от того, насколько быстро их друг уловит разницу. Целью оптимизатора является оптимизация способности друга правильно идентифицировать домашних животных.
Точно так же тензорный поток предоставляет несколько оптимизаторов, которые можно использовать при обучении модели.
Функции потерь: подобна баллу, который владелец домашнего животного присваивает другу в зависимости от того, насколько хорошо он узнает домашнее животное.
Если друг правильно узнает собаку и кошку, балл низкий (а значит, и проигрыш небольшой). Если есть ошибки в идентификации, балл высокий (а значит, и потери велики). Здесь цель состоит в том, чтобы минимизировать ошибку распознавания, указывая на то, что друг становится лучше различать собак и кошек.
Точно так же функция потерь используется для поиска ошибки, которую допускает модель. Эта ошибка указывает на то, насколько хорошо модель обучается, и эта ошибка должна быть минимальной, иначе цель состоит в том, чтобы минимизировать эту ошибку.
Tensorflow предоставляет пакет под названием tensorflow.keras.losses, который содержит множество функций потерь, которые можно использовать в модели, а именно:
- BinaryCrossentropy(): вычисляет бинарную перекрестную энтропию для задач двоичной классификации.
- CategoricalCrossentropy(): вычисляет категориальную перекрестную энтропию для задач мультиклассификации.
- MeanSquaredError(): вычисляет среднеквадратическую ошибку для задач регрессии.
- MeanAbsoluteError(): вычисляет среднюю абсолютную ошибку для измерения абсолютной разницы между прогнозируемыми и фактическими значениями.
- Huber(): это смесь MeanSquaredError и MeanAbsoluteError.
- Hinge().
- SquaredHinge().
Показатели оценки. Показатели оценки похожи на показатели точности, которые владелец домашнего животного использует для измерения того, насколько хорошо его друг может обобщить свои знания на новых домашних животных. Другу дается набор неизвестных питомцев, а показатель точности указывает процент правильной классификации.
Это помогает владельцу домашнего животного оценить способность своего друга различать собак и кошек, помимо обучающих примеров.
Таким же образом метрики используются для оценки производительности модели и рассчитывается показатель точности, который показывает, насколько хорошо модель обучилась.
Tensorflow предоставляет множество метрик, которые существуют в пакете tensorflow.keras.metrics:
- binary_accuracy;
- accuracy;
- f1_score;
- recall;
- sensitivity;
- categorical_accuracy;
- poisson;
- precision;
- sparse_categorical_accuracy;
- f2_score;
- mean.
tensorflow.keras.metrics содержит множество других показателей, которые могут измерять производительность модели.
Теперь, когда вы знаете назначение компонентов, вы должны знать, как скомпилировать с их помощью модель.
Для компиляции модели в TensorFlow есть метод compile(), который принимает разные значения аргументов, как показано ниже.
compile( optimizer='rmsprop', loss=None, metrics=None, loss_weights=None, weighted_metrics=None, run_eagerly=None, steps_per_execution=None, jit_compile=None, pss_evaluation_shards=0, **kwargs )
На этот раз объяснять аргумент не обязательно, но вы всегда должны указывать три значения аргумента.
compile( optimizer='rmsprop', loss=None, metrics=None, )
Три аргумента:
- optimizer: укажите алгоритм оптимизатора для модели.
- loss: укажите функцию потерь для модели.
- metrics: укажите метрику для модели.
Предположим, вы создали модель с именем «model_1», и чтобы настроить эту модель с помощью compile() с оптимизатором, потерями и метриками, посмотрите код ниже.
model_1.compile(optimizer='sgd', loss='mean_absolute_error', metrics=metrics.f1_score)
В приведенном выше коде model_1 настроен оптимизатор sgd, функция потерьmean_absolute_error и метрики f1_score.
Заключение
Вы узнали, как настроить модель тензорного потока, используя важные параметры, такие как optimizer, loss и metrics. Вы также узнали назначение этих параметров и то, как они помогают модели учиться на наборе данных.