我想知道是否有人在python中有一些神经网络的示例代码。如果有人知道某种教程的完整演练会很棒,但只是示例源也会很棒!
由于
答案 0 :(得分:7)
这是Armin Rigo的一个简单例子:http://codespeak.net/pypy/dist/demo/bpnn.py。 如果你想使用更复杂的东西,还有http://pybrain.org。
修改:链接已损坏。无论如何,目前在python中使用神经网络的方法可能是Theano。
答案 1 :(得分:4)
答案 2 :(得分:4)
在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
答案 3 :(得分:2)
您可能需要查看Monte:
Monte(python)是一个Python框架 用于构建基于梯度的学习 机器,如神经网络, 条件随机场,后勤 回归等。蒙特包含 模块(包含参数,a 成本函数和梯度函数) 和培训师(可以适应 模块的参数通过最小化它 培训数据的成本函数。)
模块通常由其他组成 模块,可以反过来包含 其他模块等 像这样的可分解系统可以 用反向传播计算。
答案 4 :(得分:2)
这是一个概率神经网络教程: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)