Библиотеки для нейронных сетей python

Библиотеки для нейронных сетей python

В последние годы Python стал востребованным в области Data Science. Это стало возможным благодаря появлению библиотек, способных обрабатывать и визуализировать большие данные на уровне MATLAB, Mathematica и R. Далее поговорим о 15 лучших.

NumPy

Python SciPy Stack — набор библиотек, специально предназначенных для научных вычислений. Каждый, кто собрался использовать Python в науке, должен познакомиться с этим стеком.
Самый фундаментальный пакет — NumPy. Он позволяет выполнять основные операции над n-массивами и матрицами: сложение вычитание, деление, умножение, транспонирование, вычисление определителя и т. д. Благодаря механизму векторизации, NumPy повышает производительность и, соответственно, ускоряет выполнение операций.

SciPy

SciPy — библиотека в составе Python SciPy Stack, не запутайтесь. Она содержит модули для линейной алгебры, оптимизации, интеграции и статистики. SciPy работает совместно с NumPy, что позволяет ей значительно расширить функциональность. Два аргумента, почему эта библиотека действительно хороша:

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

Pandas

Pandas — это пакет, предназначенный для простой и интуитивно понятной работы с «помеченными» и «реляционными» данными. Тоже работает в связке с NumPy, и помимо математических вычислений обеспечивает их агрегацию и визуализацию.

Matplotlib

Переходим к визуализации, и на очереди ещё одна библиотека из пакета SciPy Stack. Именно возможности Matplotlib позволяют рассматривать Python, как полноправного конкурента MATLAB или Mathematica. С её помощью вы создадите:

  • Линейные графики;
  • Графики рассеяния;
  • Гистограммы;
  • Круговые диаграммы;
  • Стволовые участки;
  • Контурные участки;
  • Участки колчана;
  • Спектрограммы.

Библиотека низкоуровневая, что означает большой объём кода для расширенной визуализации. Но производительность и работа с привычным языком позволяют закрыть глаза на этот недостаток.
Matplotlib является основным инструментом для визуализации данных на языке Python, поддерживается различными платформами и IDE (iPython, Jupyter и пр.)

Seaborn

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

Bokeh

В отличие от Seaborn, Bokeh не зависит от Matplotlib. Основная область его применения — веб, где визуализация данных происходит согласно стилю d3. js (Data-Driven Documents). Визуально графики, построенные при помощи Bokeh, выглядят привлекательнее, чем в предыдущих двух случаях.

Plotly

Plotly — онлайн инструмент .для визуализации данных с поддержкой Python, R, MATLAB, Perl, Julia, Arduino и REST. Библиотека содержит шаблоны и заготовки для повышения производительности. Есть один минус — исполнение кода происходит на серверной стороне, после чего изображение готово к публикации в интернете. Впрочем, есть способ это обойти.

SciKit-Learn

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

Theano

Theano — одна из самых мощных библиотек в нашем списке. Вот несколько причин:

  • тесная интеграция с NumPy;
  • использование CPU и GPU для повышения производительности;
  • встроенные механизмы оптимизации кода;
  • расширения для юнит-тестирования и самопроверки.

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

TensorFlow

Библиотека от Google была разработана специально для обучения нейронных сетей. Вы можете прямо сейчас оценить эффективность TensorFlow на примере голосового помощника или в игре «Quick, Draw». Библиотека использует многоуровневую систему узлов для обработки большого количества данных, что расширяет сферу её использования далеко за научную область.

Keras

Keras использует возможности TensorFlow и Theano в качестве компонентов. Минималистичный подход в дизайне и невероятная расширяемость позволяет быстро начать работу с библиотекой, и не менять её для серьёзного моделирования. Keras также используется в построении и обучении нейронных сетей, а также при решении задачи распознавания устной речи.

NLTK расшифровывается как Natural Language Toolkit, что недвусмысленно говорит о назначении библиотеки. Её Преимущественно использует для анализа текстовых документов:

  • тегирования;
  • токенизации;
  • идентификации имен;
  • построения связей между предложениями и частями текста;
  • семантические рассуждения.

Это лишь малая часть Python-библиотек, используемых в Data Science. Некоторые из них приносят общую практическую пользу, другие предлагают оптимизацию под конкретные задачи. Попробуйте их все и выберите для себя лучшие. Только начинаете свой путь в Python? Тогда записывайтесь на наш онлайн-интенсив по основам языка Питон.

Не забудьте поделиться результатами в комментариях.

В последние годы Python стал востребованным в области Data Science. Это стало возможным благодаря появлению библиотек, способных обрабатывать и визуализировать большие данные на уровне MATLAB, Mathematica и R. Далее поговорим о 15 лучших.

NumPy

Python SciPy Stack — набор библиотек, специально предназначенных для научных вычислений. Каждый, кто собрался использовать Python в науке, должен познакомиться с этим стеком.
Самый фундаментальный пакет — NumPy. Он позволяет выполнять основные операции над n-массивами и матрицами: сложение вычитание, деление, умножение, транспонирование, вычисление определителя и т. д. Благодаря механизму векторизации, NumPy повышает производительность и, соответственно, ускоряет выполнение операций.

SciPy

SciPy — библиотека в составе Python SciPy Stack, не запутайтесь. Она содержит модули для линейной алгебры, оптимизации, интеграции и статистики. SciPy работает совместно с NumPy, что позволяет ей значительно расширить функциональность. Два аргумента, почему эта библиотека действительно хороша:

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

Pandas

Pandas — это пакет, предназначенный для простой и интуитивно понятной работы с «помеченными» и «реляционными» данными. Тоже работает в связке с NumPy, и помимо математических вычислений обеспечивает их агрегацию и визуализацию.

Matplotlib

Переходим к визуализации, и на очереди ещё одна библиотека из пакета SciPy Stack. Именно возможности Matplotlib позволяют рассматривать Python, как полноправного конкурента MATLAB или Mathematica. С её помощью вы создадите:

  • Линейные графики;
  • Графики рассеяния;
  • Гистограммы;
  • Круговые диаграммы;
  • Стволовые участки;
  • Контурные участки;
  • Участки колчана;
  • Спектрограммы.
Читайте также:  Diatone ds 90c отзывы

Библиотека низкоуровневая, что означает большой объём кода для расширенной визуализации. Но производительность и работа с привычным языком позволяют закрыть глаза на этот недостаток.
Matplotlib является основным инструментом для визуализации данных на языке Python, поддерживается различными платформами и IDE (iPython, Jupyter и пр.)

Seaborn

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

Bokeh

В отличие от Seaborn, Bokeh не зависит от Matplotlib. Основная область его применения — веб, где визуализация данных происходит согласно стилю d3. js (Data-Driven Documents). Визуально графики, построенные при помощи Bokeh, выглядят привлекательнее, чем в предыдущих двух случаях.

Plotly

Plotly — онлайн инструмент .для визуализации данных с поддержкой Python, R, MATLAB, Perl, Julia, Arduino и REST. Библиотека содержит шаблоны и заготовки для повышения производительности. Есть один минус — исполнение кода происходит на серверной стороне, после чего изображение готово к публикации в интернете. Впрочем, есть способ это обойти.

SciKit-Learn

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

Theano

Theano — одна из самых мощных библиотек в нашем списке. Вот несколько причин:

  • тесная интеграция с NumPy;
  • использование CPU и GPU для повышения производительности;
  • встроенные механизмы оптимизации кода;
  • расширения для юнит-тестирования и самопроверки.

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

TensorFlow

Библиотека от Google была разработана специально для обучения нейронных сетей. Вы можете прямо сейчас оценить эффективность TensorFlow на примере голосового помощника или в игре «Quick, Draw». Библиотека использует многоуровневую систему узлов для обработки большого количества данных, что расширяет сферу её использования далеко за научную область.

Keras

Keras использует возможности TensorFlow и Theano в качестве компонентов. Минималистичный подход в дизайне и невероятная расширяемость позволяет быстро начать работу с библиотекой, и не менять её для серьёзного моделирования. Keras также используется в построении и обучении нейронных сетей, а также при решении задачи распознавания устной речи.

NLTK расшифровывается как Natural Language Toolkit, что недвусмысленно говорит о назначении библиотеки. Её Преимущественно использует для анализа текстовых документов:

  • тегирования;
  • токенизации;
  • идентификации имен;
  • построения связей между предложениями и частями текста;
  • семантические рассуждения.

Это лишь малая часть Python-библиотек, используемых в Data Science. Некоторые из них приносят общую практическую пользу, другие предлагают оптимизацию под конкретные задачи. Попробуйте их все и выберите для себя лучшие. Только начинаете свой путь в Python? Тогда записывайтесь на наш онлайн-интенсив по основам языка Питон.

Не забудьте поделиться результатами в комментариях.

Далее будет представлено максимально простое объяснение того, как работают нейронные сети, а также показаны способы их реализации в Python. Приятная новость для новичков – нейронные сети не такие уж и сложные. Термин нейронные сети зачастую используют в разговоре, ссылаясь на какой-то чрезвычайно запутанный концепт. На деле же все намного проще.

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

Содержание статьи

Создание нейронных блоков

Для начала необходимо определиться с тем, что из себя представляют базовые компоненты нейронной сети – нейроны. Нейрон принимает вводные данные, выполняет с ними определенные математические операции, а затем выводит результат. Нейрон с двумя входными данными выглядит следующим образом:

Здесь происходят три вещи. Во-первых, каждый вход умножается на вес (на схеме обозначен красным ):

Затем все взвешенные входы складываются вместе со смещением b (на схеме обозначен зеленым ):

Наконец, сумма передается через функцию активации (на схеме обозначена желтым ):

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

Функция сигмоида выводит только числа в диапазоне (0, 1) . Вы можете воспринимать это как компрессию от (−∞, +∞) до (0, 1) . Крупные отрицательные числа становятся

0 , а крупные положительные числа становятся

Простой пример работы с нейронами в Python

Предположим, у нас есть нейрон с двумя входами, который использует функцию активации сигмоида и имеет следующие параметры:

w = [0,1] — это просто один из способов написания w1 = 0, w2 = 1 в векторной форме. Присвоим нейрону вход со значением x = [2, 3] . Для более компактного представления будет использовано скалярное произведение.

С учетом, что вход был x = [2, 3] , вывод будет равен 0.999 . Вот и все. Такой процесс передачи входных данных для получения вывода называется прямым распространением, или feedforward.

Создание нейрона с нуля в Python

Приступим к имплементации нейрона. Для этого потребуется использовать NumPy. Это мощная вычислительная библиотека Python, которая задействует математические операции:

Узнаете числа? Это тот же пример, который рассматривался ранее. Ответ полученный на этот раз также равен 0.999 .

Пример сбор нейронов в нейросеть

Нейронная сеть по сути представляет собой группу связанных между собой нейронов. Простая нейронная сеть выглядит следующим образом:

На вводном слое сети два входа – x1 и x2 . На скрытом слое два нейтрона — h1 и h2 . На слое вывода находится один нейрон – о1 . Обратите внимание на то, что входные данные для о1 являются результатами вывода h1 и h2 . Таким образом и строится нейросеть.

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

Пример прямого распространения FeedForward

Давайте используем продемонстрированную выше сеть и представим, что все нейроны имеют одинаковый вес w = [0, 1] , одинаковое смещение b = 0 и ту же самую функцию активации сигмоида. Пусть h1 , h2 и o1 сами отметят результаты вывода представленных ими нейронов.

Читайте также:  Как в пуске сделать выполнить

Что случится, если в качестве ввода будет использовано значение х = [2, 3] ?

Результат вывода нейронной сети для входного значения х = [2, 3] составляет 0.7216 . Все очень просто.

Нейронная сеть может иметь любое количество слоев с любым количеством нейронов в этих слоях.

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

Создание нейронной сети прямое распространение FeedForward

Далее будет показано, как реализовать прямое распространение feedforward в отношении нейронной сети. В качестве опорной точки будет использована следующая схема нейронной сети:

Мы вновь получили 0.7216 . Похоже, все работает.

Пример тренировки нейронной сети — минимизация потерь, Часть 1

Предположим, у нас есть следующие параметры:

Имя/Name Вес/Weight (фунты) Рост/Height (дюймы) Пол/Gender
Alice 133 65 F
Bob 160 72 M
Charlie 152 70 M
Diana 120 60 F

Давайте натренируем нейронную сеть таким образом, чтобы она предсказывала пол заданного человека в зависимости от его веса и роста.

Мужчины Male будут представлены как 0 , а женщины Female как 1 . Для простоты представления данные также будут несколько смещены.

Имя/Name Вес/Weight (минус 135) Рост/Height (минус 66) Пол/Gender
Alice -2 -1 1
Bob 25 6
Charlie 17 4
Diana -15 -6 1

Для оптимизации здесь произведены произвольные смещения 135 и 66 . Однако, обычно для смещения выбираются средние показатели.

Потери

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

В данном случае будет использоваться среднеквадратическая ошибка (MSE) потери:

  • n – число рассматриваемых объектов, которое в данном случае равно 4. Это Alice , Bob , Charlie и Diana ;
  • y – переменные, которые будут предсказаны. В данном случае это пол человека;
  • ytrue – истинное значение переменной, то есть так называемый правильный ответ. Например, для Alice значение ytrue будет 1 , то есть Female ;
  • ypred – предполагаемое значение переменной. Это результат вывода сети.

(ytrue — ypred) 2 называют квадратичной ошибкой (MSE). Здесь функция потери просто берет среднее значение по всем квадратичным ошибкам. Отсюда и название ошибки. Чем лучше предсказания, тем ниже потери.

Лучшие предсказания = Меньшие потери.

Тренировка нейронной сети = стремление к минимизации ее потерь.

Пример подсчета потерь в тренировки нейронной сети

Скажем, наша сеть всегда выдает 0 . Другими словами, она уверена, что все люди — Мужчины. Какой будет потеря?

Имя/Name ytrue ypred (ytrue — ypred) 2
Alice 1 1
Bob
Charlie
Diana 1 1

Python код среднеквадратической ошибки (MSE)

Ниже представлен код для подсчета потерь:

При возникновении сложностей с пониманием работы кода стоит ознакомиться с quickstart в NumPy для операций с массивами.

Тренировка нейронной сети — многовариантные исчисления, Часть 2

Текущая цель понятна – это минимизация потерь нейронной сети. Теперь стало ясно, что повлиять на предсказания сети можно при помощи изменения ее веса и смещения. Однако, как минимизировать потери?

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

Для простоты давайте представим, что в наборе данных рассматривается только Alice :

Имя/Name Вес/Weight (минус 135) Рост/Height (минус 66) Пол/Gender
Alice -2 -1 1

Затем потеря среднеквадратической ошибки будет просто квадратической ошибкой для Alice :

Еще один способ понимания потери – представление ее как функции веса и смещения. Давайте обозначим каждый вес и смещение в рассматриваемой сети:

Затем можно прописать потерю как многовариантную функцию:

Представим, что нам нужно немного отредактировать w1 . В таком случае, как изменится потеря L после внесения поправок в w1 ?

На этот вопрос может ответить частная производная . Как же ее вычислить?

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

Для начала, давайте перепишем частную производную в контексте :

Данные вычисления возможны благодаря дифференцированию сложной функции.

Подсчитать можно благодаря вычисленной выше L = (1 — ypred) 2 :

Теперь, давайте определим, что делать с . Как и ранее, позволим h1 , h2 , o1 стать результатами вывода нейронов, которые они представляют. Дальнейшие вычисления:

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

Так как w1 влияет только на h1 , а не на h2 , можно записать:

Использование дифференцирования сложной функции.

Те же самые действия проводятся для :

Еще одно использование дифференцирования сложной функции.

В данном случае х1 — вес, а х2 — рост. Здесь f′(x) как производная функции сигмоида встречается во второй раз. Попробуем вывести ее:

Функция f'(x) в таком виде будет использована несколько позже.

Вот и все. Теперь разбита на несколько частей, которые будут оптимальны для подсчета:

Эта система подсчета частных производных при работе в обратном порядке известна, как метод обратного распространения ошибки, или backprop.

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

Пример подсчета частных производных

В данном примере также будет задействована только Alice :

Имя/Name Вес/Weight (минус 135) Рост/Height (минус 66) Пол/Gender
Alice -2 -1 1
Читайте также:  Ватсап сохраняет фото на телефон андроид

Здесь вес будет представлен как 1 , а смещение как 0 . Если выполним прямое распространение (feedforward) через сеть, получим:

Выдачи нейронной сети ypred = 0.524 . Это дает нам слабое представление о том, рассматривается мужчина Male (0) , или женщина Female (1) . Давайте подсчитаем :

Напоминание: мы вывели f ‘(x) = f (x) * (1 — f (x)) ранее для нашей функции активации сигмоида.

У нас получилось! Результат говорит о том, что если мы собираемся увеличить w1 , L немного увеличивается в результате.

Тренировка нейронной сети: Стохастический градиентный спуск

У нас есть все необходимые инструменты для тренировки нейронной сети. Мы используем алгоритм оптимизации под названием стохастический градиентный спуск (SGD), который говорит нам, как именно поменять вес и смещения для минимизации потерь. По сути, это отражается в следующем уравнении:

η является константой под названием оценка обучения, что контролирует скорость обучения. Все что мы делаем, так это вычитаем из w1 :

  • Если положительная, w1 уменьшится, что приведет к уменьшению L .
  • Если отрицательная, w1 увеличится, что приведет к уменьшению L .

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

Наш процесс тренировки будет выглядеть следующим образом:

  1. Выбираем один пункт из нашего набора данных. Это то, что делает его стохастическим градиентным спуском. Мы обрабатываем только один пункт за раз;
  2. Подсчитываем все частные производные потери по весу или смещению. Это может быть , и так далее;
  3. Используем уравнение обновления для обновления каждого веса и смещения;
  4. Возвращаемся к первому пункту.

Давайте посмотрим, как это работает на практике.

Создание нейронной сети с нуля на Python

Наконец, мы реализуем готовую нейронную сеть:

В этой статье опишем как минимальным средствами может быть создана и обучена нейронная сеть при помощи Python и библиотеки Keras.

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

Библиотека Keras представляет собой высокоуровневый интерфейс для создания нейронных сетей. Keras написан на Python и работает поверх таких более низкоуровневых решений, как TensorFlow, CNTK и Theano. За счет этого программный код получается не только мощным, но и крайне компактным.

Экспериментальные данные, взятые из медицинского архива, представляют собой файл со значениями, разделенными запятыми, в котором каждая строка соответствует одной анкете. Подробную информацию о данных из датасета вы можете прочитать здесь. В наборе экспериментальных данных, состоящих из анонимных записей имеется девять параметров. Последний из них, целевой, показывает, наблюдался ли у пациента сахарный диабет или нет (соответственно, 1 или 0). Восемь остальных параметров также имеют численные значения:

  1. Число беременностей (все пациенты из источника – женщины не моложе 21 года индийской народности пима).
  2. Концентрация глюкозы в плазме через 2 часа после введения в пероральном глюкозотолерантном тесте.
  3. Диастолическое артериальное давление (мм рт. ст.).
  4. Толщина кожной складки в районе трицепса (мм).
  5. Концентрация инсулина в сыворотке крови (мкЕд/мл).
  6. Индекс массы тела (вес в кг/(рост в м)^2).
  7. Функция, описывающая генетическую предрасположенность к диабету (diabetes pedegree).
  8. Возраст (годы).

Программный код и датасет также доступны на Github.

Библиотека Keras позволяет запускать нейронные сети с минимальным количеством операций. В качестве модели нейронной сети используется последовательная Sequental из модуля keras.models с заданием слоев keras.layers типа Dense.

Для последующей воспроизводимости результатов зафиксируем генератор случайных чисел при помощи функции random.seed() из библиотеки numpy. Считаем данные из датасета:

Разделим данные на матрицу признаков X и вектор целевой переменной Y (последний столбец датасета):

Создаем модель нейронной сети:

Опишем структуру модели нейронной сети. Определим входной, выходной и скрытые слои. Наша нейронная сеть будет иметь плотную (Dense) структуру – каждый нейрон связан со всеми нейронами следующего слоя. Выходной слой будет состоять из единственного нейрона, определяющего вероятность заболевания диабетом.

Слой добавляется к модели методом add(). Для входного слоя необходимо указать число признаков input_dim, равное в нашем случае 8:

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

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

Создадим три скрытых слоя и один выходной слой нашей нейронной сети:

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

Перед тем, как начать тренировать модель, ее нужно скомпилировать при помощи метода compile():

Методу передается три параметра:

  • loss – функция потерь – объект, который модель стремиться минимизировать;
  • optimizer – оптимизатор, мы используем встроенный метод стохастической оптимизации adam, описанный в публикации Дедерика Кингма и Джимми Ба;
  • metrics – список метрик оптимизации, для задач классификации используется метрику ‘accuracy’.

Для обучения нейронной сети применяем метод fit():

Параметр epochs – "эпохи" – количество проходов нейронной сети по всем записям датасета (выбирается исходя из того, насколько быстро модель с каждым новым проходом приближается к желаемой предсказательной точности), batch_size – количество объектов выборки, берущихся за один шаг. В процессе обучения API будет выводить соответствующие строчки с величинам функции потерь и метрики для каждой из эпох.

Оценим результат обучения нейронной сети. Метод evaluate() возвращает значения функции потерь и метрики для обученной модели:

Последняя строчка в форматированном виде выводит точность прогноза по нашей модели для заданной метрики accuracy:

Наконец, полный код нейронной сети с комментариями приведен в листинге ниже:

Ссылка на основную публикацию
Zyxel keenetic extra openwrt
Тут описано как на роутеры Zyxel серии Keenetic установить прошивку OpenWRT. Записка появилась на свет по нескольким причинам: - Наличие...
Php определить длину строки
(PHP 3, PHP 4, PHP 5) strlen -- Возвращает длину строки Описание int strlen ( string string ) Возвращает длину...
Php формирование pdf документа
С помощью расширения dompdf можно легко сформировать PDF файл. По сути, dompdf – это конвертер HTML в PDF который поддерживает...
Абсолютный и относительный адрес в excel
17 Адресация ячеек в Excel Относительные и абсолютные Относительные и абсолютные адреса ячеек Большинство ссылок в формулах записываются в относительной...
Adblock detector