Пример нейронной сети Исходный код (предпочтительно Python)

Интересно, есть ли у кого-нибудь пример кода нейронной сети на питоне. Если кто-то знает какой-то учебник с полным пошаговым руководством, это было бы здорово, но просто пример исходного кода тоже был бы отличным!

Спасибо


person Fifth-Edition    schedule 03.10.2009    source источник


Ответы (5)


Посмотрите на обучения клик из книги Программирование коллективного разума.

person jfs    schedule 03.10.2009

Вот простой пример от Армина Риго: http://codespeak.net/pypy/dist/demo/bpnn.py. Если вы хотите использовать более сложные вещи, есть также http://pybrain.org.

Изменить: ссылка не работает. В любом случае, текущий способ использования нейронных сетей в Python, вероятно, — это Theano.

person bayer    schedule 03.10.2009

Нашел это интересное обсуждение на форумах Ubuntu http://ubuntuforums.org/showthread.php?t=320257< /а>

import time
import random

# Learning rate:
# Lower  = slower
# Higher = less precise
rate=.2

# Create random weights
inWeight=[random.uniform(0, 1), random.uniform(0, 1)]

# Start neuron with no stimuli
inNeuron=[0.0, 0.0]

# Learning table (or gate)
test =[[0.0, 0.0, 0.0]]
test+=[[0.0, 1.0, 1.0]]
test+=[[1.0, 0.0, 1.0]]
test+=[[1.0, 1.0, 1.0]]

# Calculate response from neural input
def outNeuron(midThresh):
    global inNeuron, inWeight
    s=inNeuron[0]*inWeight[0] + inNeuron[1]*inWeight[1]
    if s>midThresh:
        return 1.0
    else:
        return 0.0

# Display results of test
def display(out, real):
        if out == real:
            print str(out)+" should be "+str(real)+" ***"
        else:
            print str(out)+" should be "+str(real)

while 1:
    # Loop through each lesson in the learning table
    for i in range(len(test)):
        # Stimulate neurons with test input
        inNeuron[0]=test[i][0]
        inNeuron[1]=test[i][1]
        # Adjust weight of neuron #1
        # based on feedback, then display
        out = outNeuron(2)
        inWeight[0]+=rate*(test[i][2]-out)
        display(out, test[i][2])
        # Adjust weight of neuron #2
        # based on feedback, then display
        out = outNeuron(2)
        inWeight[1]+=rate*(test[i][2]-out)
        display(out, test[i][2])
        # Delay
        time.sleep(1)

РЕДАКТИРОВАТЬ: существует также фреймворк с именем chainer https://pypi.python.org/pypi/chainer/1.0.0

person maazza    schedule 15.09.2012
comment
Как смещение играет в этом коде? Я не совсем понимаю. - person extensa5620; 28.01.2016

Вы можете взглянуть на Monte:

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

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

person Jukka Matilainen    schedule 04.10.2009

Вот учебное пособие по вероятностной нейронной сети:http://www.youtube.com/watch?v=uAKu4g7lBxU

И моя реализация Python:

import math

data = {'o' : [(0.2, 0.5), (0.5, 0.7)],
        'x' : [(0.8, 0.8), (0.4, 0.5)],
        'i' : [(0.8, 0.5), (0.6, 0.3), (0.3, 0.2)]}

class Prob_Neural_Network(object):
    def __init__(self, data):
        self.data = data

    def predict(self, new_point, sigma):
        res_dict = {}
        np = new_point
        for k, v in self.data.iteritems():
            res_dict[k] = sum(self.gaussian_func(np[0], np[1], p[0], p[1], sigma) for p in v)
        return max(res_dict.iteritems(), key=lambda k : k[1])

    def gaussian_func(self, x, y, x_0, y_0, sigma):
        return  math.e ** (-1 *((x - x_0) ** 2 + (y - y_0) ** 2) / ((2 * (sigma ** 2))))

prob_nn = Prob_Neural_Network(data)
res = prob_nn.predict((0.2, 0.6), 0.1)

Результат:

>>> res
('o', 0.6132686067117191)
person Akavall    schedule 30.08.2013
comment
Привет, я запускаю это в Python 3, и у меня есть следующая ошибка. AttributeError: объект 'dict' не имеет атрибута 'iteritems' - person GabyLP; 26.04.2015
comment
@GabrielaPlantie, измени .iteritems() на .items(); это должно исправить это. - person Akavall; 26.04.2015