Для этого опыта мы будем использовать хорошо известный набор данных Iris Dataset, который показывает 4 основные характеристики растений ириса, показывая 3 возможные категории setosa, versicolor и virginica.

Задача для этой возможности будет заключаться в том, чтобы представить нейронную сеть и применить лучшие практики в извлечении, обработке и построении модели с использованием TensorFlow. Мы собираемся использовать tf.keras, а ввод данных будет осуществляться через tf.data в сочетании с некоторыми сравнениями, чтобы добавить разнообразия в раздел обработки данных.

Кроме того, мы будем использовать режим ожидания и сравним реализацию графа и реализацию режима ожидания.

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

С теоретической точки зрения, поскольку у нас будет 3 возможных категории, мы применим вариант логистической регрессии, мы попытаемся представить регрессию softmax или также называемую полиномиальной логистической регрессией.

Блокнот Colab [не терпится]

Блокнот Colab [не терпится]

Необходимый импорт

проверенная версия tf: 1.10.0

импортировать тензорный поток как tf
импортировать pandas как pd
импортировать numpy как np

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

В этом разделе для нетерпеливой модели я добавлю эту инструкцию.

tf.enable_eager_execution()

Загрузка и анализ входных данных

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

Создайте набор данных

Теперь давайте создадим набор данных, используя tf.data. Простота работы с пакетом данных и перемешивание делают использование tf.data.Dataset очень привлекательным.

Построить модель

Теперь давайте создадим модель в tf.keras. Мы собираемся использовать слой из 16 нейронов с входным измерением, равным 4, это измерение объясняется описанными характеристиками набора данных.

Затем мы будем использовать слой из 3 нейронов с функцией активации softmax для получения необходимых выходных данных, которые мы ищем. С помощью этой процедуры мы пытаемся согласовать наше теоретическое определение дизайна, где мы установили использование регрессии softmax / полиномиальной логистической регрессии.

Когда мы попытаемся скомпилировать модель, у нас будет ограничение как минимум для текущей версии TF и ​​активного режима.

Нам нужен нативный оптимизатор, поэтому я добавил модификацию после комментария python #eager on.

Обучите модель

В этом режиме, используя функцию «подгонки» модели в Keras, мы предложим 100 эпох, передадим набор данных и выполним только обучение модели.

Примечание. После этого вы можете использовать вариации параметров модели.

Оценка модели

На этом этапе задачи мы будем использовать тестовый набор данных с тем же количеством шагов, что и на этапе обучения, а tf.keras упрощает выполнение, обеспечивая точность и потери модели.

Используйте модель

Пришло время использовать модель. Мы передадим значения длины чашелистика [см], ширины чашелистика [см], длины лепестка [см], ширины лепестка [см], и после оценки у нас будет прогноз того, какой тип категории растений ириса представляет эти показатели.

Используя только простую модификацию нашего кода для использования нетерпеливого режима и выбора pycharm, мы можем прозрачно протестировать выполнение и отладить реализацию.

нетерпеливый код реализации [github]

Выводы

Существует множество реализаций этого набора данных, но мой первоначальный вывод таков: представить эту задачу с помощью TensorFlow было очень просто. Использование td.data значительно упрощает распространение и подготовку набора данных. tf.keras значительно упрощает создание модели, вариации гиперпараметров и настройки. Наконец, нетерпеливая модальность позволяет полностью отлаживать и контролировать выполнение механизмов обучения, оценки и использования.