Нейронные сети, как они смотрят в кодировании?

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

Может любой давать мне часть кода простой нейронной сети что-то как "Привет Мир!"?

13
задан Supyxy 1 July 2010 в 17:01
поделиться

4 ответа

У AI-Junkie есть отличный учебник по (A) NN , и у них есть код, размещенный там .

Вот нейрон (от ai-junkie):

struct SNeuron
{

   //the number of inputs into the neuron
   int m_NumInputs;

   //the weights for each input
   vector<double> m_vecWeight;

   //ctor
   SNeuron(int NumInputs);

};

Вот нейронный слой (ai-junkie):

struct SNeuronLayer
{
  //the number of neurons in this layer
  int m_NumNeurons;

  //the layer of neurons
  vector<SNeuron> m_vecNeurons;

  SNeuronLayer(int NumNeurons, int NumInputsPerNeuron);
};

Как я уже упоминал ранее ... вы можете найти весь код с ai-junkie (A) NN учебник.

4
ответ дан 1 December 2019 в 23:13
поделиться

Это руководство программиста NUPIC .NuPIC - это структура для реализации их теории (HTM), основанная на структуре и работе неокортекса

. Так они определяют HTM

Технология HTM имеет потенциал для решения многих сложных проблем в машинном обучении, логических выводах и прогнозировании. . Некоторые из областей применения, которые мы изучаем вместе с нашими клиентами, включают в себя распознавание объектов на изображениях, распознавание поведения в видео, определение пола говорящего, прогнозирование моделей трафика, выполнение оптического распознавания символов в беспорядочном тексте, оценка медицинских изображений и прогнозирование шаблонов щелчков мышью. В интернете.

это простая сеть с номером 1.5

from nupic.network import *
from nupic.network.simpledatainterface import WideDataInterface 
def TheNet():
    net=SimpleHTM(
          levelParams=[
            { # Level 0 
            },
            { # Level 1
              'levelSize': 8, 'bottomUpOut': 8,
              'spatialPoolerAlgorithm': 'gaussian',
              'sigma': 0.4, 'maxDistance': 0.05,
              'symmetricTime': True, 'transitionMemory': 1,
              'topNeighbors': 2, 'maxGroupSize': 1024,
              'temporalPoolerAlgorithm': 'sumProp'
            },
            { # Level 2
               'levelSize': 4, 'bottomUpOut': 4,
               'spatialPoolerAlgorithm': 'product',
               'symmetricTime': True, 'transitionMemory': 1,
               'topNeighbors': 2, 'maxGroupSize': 1024,
               'temporalPoolerAlgorithm': 'sumProp'
             },
             { # Level 3
               'levelSize': 1,
               'spatialPoolerAlgorithm': 'product',
               'mapperAlgorithm': 'sumProp'
             },],)

    Data=WideDataInterface('Datos/__Categorias__.txt',    'Datos/Datos_Entrenamiento%d.txt', numDataFiles = 8)#

    net.createNetwork(Data)
    net.train(Datos)

if __name__ == '__main__':
    print "Creating HTM Net..."
    TheNet()
1
ответ дан 1 December 2019 в 23:13
поделиться

Вы сказали, что уже знакомы с нейронными сетями, но поскольку существует много разных типов нейронных сетей разной сложности (сверточные, хеббианские, карты Кохонена и т. Д.), Я пойду снова через простую нейронную сеть с прямой связью, просто чтобы убедиться, что мы находимся на одной странице.

Базовая нейронная сеть состоит из следующих элементов

  1. Нейроны
    1. Входные нейроны
    2. Скрытые нейроны (необязательно)
    3. Выходные нейроны
  2. Связи между нейронами (иногда называемые синапсами по аналогии с биологией)
  3. Функция активации

Нейроны имеют значение активации . Когда вы оцениваете сеть, активация входных узлов устанавливается на фактический вход. Ссылки от входных узлов ведут к узлам, более близким к выходным, обычно к одному или нескольким слоям скрытых узлов. В каждом нейроне активация входа обрабатывается с помощью функции активации .Могут использоваться разные функции активации, а иногда они даже различаются в нейронах одной сети.

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

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

Наконец, выходной сигнал сети извлекается из активации выходного нейрона (ов).

Я собрал очень простой (и очень многословный ...) пример здесь . Он написан на Ruby и вычисляет AND, что очень просто.

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

7
ответ дан 1 December 2019 в 23:13
поделиться

В основном нужен объект, представляющий один нейрон с корриспективными ассоциациями с другими нейронами (представляющими синапсы) и их весами.

Один нейрон в типичном языке ООП будет чем-то вроде

class Synapse
{
  Neuron sending;
  Neuron receiving;
  float weight;
}

class Neuron
{
  ArrayList<Synapse> toSynapses;
  ArrayList<Synapse> fromSynapses;

  Function threshold;
}  

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

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

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

7
ответ дан 1 December 2019 в 23:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: