Министерство образования Республики Беларусь Учреждение образования «Белорусский государственный университет информатики и радиоэлектроники» Отчет по лабораторной работе №2 по курсу: «Интеллектуальный анализ информации» на тему: «Знакомство с фреймворками и ПО для обучения нейронных сетей (tensorflow) » Выполнил студент группы 758341: Соболевский А.С. Проверил: Ивашенко В.П МИНСК 2018 1.ЦЕЛЬ Ознакомиться с фреймворками и ПО для обучения нейронных сетей. 2.ПОСТАНОВКА ЗАДАЧИ На примере описать возможности фреймворка tensorflow. 3.ОПИСАНИЕ ЗАДАЧИ ДЛЯ ПРИМЕРА РАБОТЫ С ФРЕЙМВОРКОМ TENSORFLOW В качестве примера была выбрана задача распознавания сорта цветка ириса по длине и ширине его лепестков. Нейронная сеть обучается на наборе данных следующей структуры: ● Id ● SepalLengthCm - длина нижнего лепестка. ● SepalWidthCm - ширина нижнего лепестка. ● PetalLengthCm - длина верхнего лепестка. ● PetalWidthCm - ширина верхнего лепестка. ● Species - сорт цветка Рисунок 1 - обозначение лепестков ириса. На рисунке 1 показаны нижние и верхние лепестки. В набор данных входят 3 сорта цветка и 50 значений размера лепестка на каждый. 4.ОПИСАНИЕ ИСПОЛЬЗОВАНИЯ TENSORFLOW ДЛЯ ДАННОЙ ЗАДАЧИ ФРЕЙМВОРКА Опишем функции фреймворка tensorflow, которые использовались для реализации данной задачи. set_random_seed(int) - используется для того, чтобы случайно сгенерированные последовательности оставались неизменными для каждой новой сессии, при неизменном аргументе функции. placeholder - создает переменные без присваивания им реальных данных, что позволяет создавать операции графа вычислений и строить данный граф без наполнения переменной реальными данными. Аргументы: dtype (тип данных), shape (размер вектора данных), name (название операции). Variable - используется для добавления переменной в граф вычислений. Конструктор Variable требует определения начального значения, которое может быть вектором любого типа и размера. После создания данной переменной, тип и размер остаются неизменными. Значение может быть изменено при помощи специального метода assign(). nn.relu - функция активации relu. Tensorflow предоставляет большой выбор активационных функций: add - позволяет складывать матрицы matmul - позволяет перемножать матрицы reduce_mean - вычисляет среднее значение вектора. Аргументом axis можно задать по какой оси считать среднее, по умолчанию данный метод считает среднее по всей матрице. Данный фреймворк позволяет использовать различные типы обучения нейронных сетей. global_variables_initializer - инициализирует глобальные операции вычислительного графа. В отчете представлены не все функции фреймворка tensorflow, а лишь малая их часть. 5.ВЫВОД TensorFlow предоставляет библиотеку готовых алгоритмов численных вычислений, реализованных через графы потоков данных (data flow graphs). Узлы в таких графах реализуют математические операции или точки входа/вывода, в то время как рёбра графа представляют многомерные массивы данных (тензоры), которые перетекают между узлами. Узлы могут быть закреплены за вычислительными устройствами и выполняться асинхронно, параллельно обрабатывая разом все подходящие к ним тезоры. Таким образом строится нейронная сеть, все узлы которой работают одновременно по аналогии с одновременной активацией нейронов в мозге. Код системы написан на языках С++ и Python и распространяется под лицензией Apache. В настоящее время технологии TensorFlow уже используются Google в таких областях, как распознавание речи, выделение лиц на фотографиях, определение схожести изображений, отсеивание спама в Gmail и определение смысла в сервисе перевода.