神经网络示例源代码(最好是Python)

发布于 2024-08-06 19:23:35 字数 1539 浏览 1 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

永不分离 2024-08-13 19:23:35

在 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

Found this interresting discusion on ubuntu forums
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)

EDIT: there is also a framework named chainer
https://pypi.python.org/pypi/chainer/1.0.0

生生漫 2024-08-13 19:23:35

您可能想看看 Monte

Monte (python) 是一个Python框架
用于构建基于梯度的学习
机器,如神经网络,
条件随机场,逻辑
Monte包含回归等
模块(保存参数,a
成本函数和梯度函数)
和培训师(可以适应
通过最小化模块的参数
训练数据的成本函数)。

模块通常由其他组成
模块,其中又可以包含
其他模块等的梯度
像这样的可分解系统可以是
通过反向传播计算。

You might want to take a look at Monte:

Monte (python) is a Python framework
for building gradient based learning
machines, like neural networks,
conditional random fields, logistic
regression, etc. Monte contains
modules (that hold parameters, a
cost-function and a gradient-function)
and trainers (that can adapt a
module's parameters by minimizing its
cost-function on training data).

Modules are usually composed of other
modules, which can in turn contain
other modules, etc. Gradients of
decomposable systems like these can be
computed with back-propagation.

清晨说晚安 2024-08-13 19:23:35

这是概率神经网络教程: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)

Here is a probabilistic neural network tutorial :http://www.youtube.com/watch?v=uAKu4g7lBxU

And my Python Implementation:

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)

Result:

>>> res
('o', 0.6132686067117191)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文