python中多层感知器网络的实现
perceptron的Python项目详细描述
感知器实现了一个用python编写的多层感知器网络。 这种类型的网络由多层神经元组成,第一层 其中包括输入。最后一层给出输出。可能有 多个中间层,但在本例中,它只使用一个中间层。
For further information about multilayer perceptron networks, please read this entry on the Wikipedia.
要求
- python>;=2.7
安装
您可以通过easy_install或pip:
easy_install perceptron pip install perceptron
向前进给
神经网络使用{em1}$双曲正切(tanh)函数。
双曲正切
x轴是节点的总输入。当输入近似为0时, 产量开始迅速攀升。输入为2时,输出为 阿尔莫斯在1,但不会变得更高。这是一种sigmoid 计算神经元输出的函数。
Note: Before runing the ^{tt3}$ algorithm, the network will have to query the nodes and connections, and build, in memory, the position of the network that is relevant to a specific input.
反向传播训练
然后,反向传播算法执行以下步骤。
对于输出层中的每个节点:
- 计算节点的电流输出和它应该是什么之间的差异。
- 使用dtanh函数确定节点的总输入必须更改多少。
- 根据输入的当前强度和学习率,按比例改变每个不符合输入的强度。
对于隐藏层中的每个节点:
- 将节点的输出更改为每个输出值的强度之和乘以其目标必须更改的量。
- 使用dtanh函数确定节点的总输入必须更改多少。
- 根据输入的当前强度和学习率,按比例改变每个不符合输入的强度。
这个算法的实现实际上计算了所有的错误 提前调整重量,因为所有的计算 依赖于知道当前权重而不是更新的权重。
Note: Before runing ^{tt6}$ method, it’s necessary to run ^{tt3}$ so that the current output of every node will be stored in the instance variables.
用法
在文件开头导入模块:
fromperceptronimportmlp
初始化neural network:
n=mlp.Net()
示例
在这个例子中,第一层的神经元对应于 用作输入。如果存在一个id,那么 连接到那个词就变得活跃起来。第二层由 第一层,所以它响应id的组合。最后,神经元 将结果反馈给输出,特定的组合可以是 与可能的结果强或弱相关的。最后, 最终的决定是对id进行最强分类的输出。
fromperceptronimportmlpdefmain():n=mlp.Net()foriinrange(30):n.train([101,103],[201,202,203],201)n.train([102,103],[201,202,203],202)n.train([101],[201,202,203],203)printn.eval([101,103,],[201,202,203])printn.eval([102,103],[201,202,203])printn.eval([103],[201,202,203])if__name__=='__main__':main()
这将给出以下输出。
[0.8435967735300776, 0.011059223531796199, 0.017992770688108367] [-0.028282207517584094, 0.8775955174169334, 0.0032322039490162353] [0.8459277961565395, -0.011590385221469553, -0.8361964445052618]
许可证
版权所有©2016罗杰·费尔南德斯·古里。它是免费软件,可能是 根据 LICENCE文件。