python中多层感知器网络的实现

perceptron的Python项目详细描述


PyPI versionBuild Status

感知器实现了一个用python编写的多层感知器网络。 这种类型的网络由多层神经元组成,第一层 其中包括输入。最后一层给出输出。可能有 多个中间层,但在本例中,它只使用一个中间层。

For further information about multilayer perceptron networks, please read this entry on the Wikipedia.

要求

安装

您可以通过easy_installpip

easy_install perceptron
pip install perceptron

向前进给

神经网络使用{em1}$双曲正切(tanh)函数。

Hyperbolic tangent

双曲正切

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.

反向传播训练

然后,反向传播算法执行以下步骤。

对于输出层中的每个节点:

  1. 计算节点的电流输出和它应该是什么之间的差异。
  2. 使用dtanh函数确定节点的总输入必须更改多少。
  3. 根据输入的当前强度和学习率,按比例改变每个不符合输入的强度。

对于隐藏层中的每个节点:

  1. 将节点的输出更改为每个输出值的强度之和乘以其目标必须更改的量。
  2. 使用dtanh函数确定节点的总输入必须更改多少。
  3. 根据输入的当前强度和学习率,按比例改变每个不符合输入的强度。

这个算法的实现实际上计算了所有的错误 提前调整重量,因为所有的计算 依赖于知道当前权重而不是更新的权重。

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文件。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java RESTEasy客户端。找不到contenttype应用程序/xml的编写器   java谷歌地图“优化路径点”如何解决旅行推销员的问题?   java以编程方式创建的EditText的输入类型密码无效   eclipse删除Java文件中的所有注释   java如何定制Hibernate环境   javascript Websocket onmessage未启动基于java的服务器   java无法解析SQLException   jar如何克服类路径问题并在OSX上编译OpenKinect Java示例?   java LibGdx:在不同类中使用setInputProcessor(stage)   java如何将调用静态导入的泛型方法的结果传递给另一个方法?   struts2标记中的java条件if   java RecyclerView未设置适配器   类自定义Java类加载器未用于加载依赖项?   java Ehcache3持久性对性能的影响,无论如何都要使用磁盘层   java MapDB准备好投入生产了吗?