Русский
Русский
English
Статистика
Реклама

Искусственные нейронные сети. Часть 2

Нейронная сеть

В этой части мы изучим принципы работы нейронных сетей и напишем нейронную сеть из 2 слоев.

Нейронные сети состоят из связанных между собой нейронов.

Подробнее о нейронах я писал в предыдущей части.

Нейронные сети делятся на слои:

  1. Входной слой

  2. Скрытые слои

  3. Выходной слой

Скрытые слои это слои между входным и выходным, количество скрытых слоев может быть любым.

Мы напишем нейронную сеть из 2 слоев, входного и выходного слоев.

Вначале разберем принципы работы нейронных сетей.

Как я уже говорил нейронные сети делятся на слои. В каждом слое некоторое количество нейронов. Выходы всех нейронов в слое, отправляются на входы всех нейронов следующего слоя.

Схема нейронной сети из 3 слоев с 2 нейронами на входе, 3 скрытыми, 1 выходным будет выглядеть так

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

В итоге у нас получилось 3 слоя и 6 нейронов.

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

Схема для нашей нейронной сети

Создадим файл NeuronNet.py

Подключим класс нейрона который писали в прошлой части:

from Neuron import *

Опишем в файле класс NeuronNet и конструктор для него:

class NeuronNet:    def __init__(self):            self.n = []                for i in range(3):            self.n.append(Neuron(2))

В конструкторе класса создается массив из объектов класса Neuron размером в 3 нейрона. Нейрону передаем в параметры число 2, так как входов для всех нейронов будет по 2.

Для работы нейронной сети нам надо запустить функцию активации нейронов, запустить функцию активации 3 нейрона и передать ему выходы из 1 и 2 нейрона, на вход 1 и 2 нейрону передаем входные данные полученные от пользователя:

def activate(self, inputs):    return self.n[2].activate(np.array([self.n[0].activate(inputs), self.n[1].activate(inputs)]))

В итоге у нас получился класс NeuronNet. Который мы записали в файл NeuronNet.py.

Полное содержание NeuronNet.py:

from Neuron import *class NeuronNet:    def __init__(self):        self.n = []        for i in range(3):            self.n.append(Neuron(2))    def activate(self, inputs):        return self.n[2].activate(np.array([self.n[0].activate(inputs), self.n[1].activate(inputs)]))

Теперь создадим файл main.py, чтобы проверить работоспособность нашей нейронной сети.

Подключим к файлу main.py библиотеку numpy и наш файл NeuronNet.py:

import numpy as npfrom NeuronNet import *

Создадим объект нейронной сети:

net = NeuronNet()

Объявим массив с входными данными и передадим его в нейронную сеть:

x = np.array([1, 2])print(net.activate(x))

Полное содержание файла:

import numpy as npfrom NeuronNet import *net = NeuronNet()x = np.array([1, 2])print(net.activate(x))

Теперь запустим наш код. Введем в консоль:

python main.py

Вывод программы

Запустим еще раз

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

Подведем итоги.

Сегодня мы:

  1. Узнали принципы работы нейронных сетей

  2. Выучили принципы связи нейронов в нейронных сетях

  3. Написали класс NeuronNet на языке программирования python

  4. Запустили свою первую нейронную сеть

В следующей части мы реализуем обучение нашей нейронной сети.

Если остались вопросы после чтения статьи, задайте их в комментариях.

Источник: habr.com
К списку статей
Опубликовано: 16.02.2021 04:11:35
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Python

Искусственный интеллект

Нейоросеть

Нейронные сети

Нейронная сеть

Нейронная сеть с нуля

Machine learning

Нейросети

Ai

Ии

Машинное обучение

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru