python实现多层神经网络(后向传送训练算法),学习异或操作

跟上次一样,跟着《人工智能》这本书中所说的步骤,一步一步敲出来的
敲完之后,运行起来发现训练周期竟然达到了50000+。。。我检查代码检查了很多遍,也跟书本上的一次训练数据作了对比,没发现什么问题,并且异或操作的学习最终也学习成功了
之后,我加入要素常数来提高学习速度,没想到加入之后,训练周期200+就结束了。。。这学习速度快了几百倍。。。好夸张,下面上代码

import math

def sigmoidFunc(x):  #定义sigmoid函数
    return 1 / (1 + math.exp(-x))

def trainning():  #定义训练函数
    #本次神经网络的结构
    #  1       3       5
    #  2       4
    #输入层   隐含层   输出层

    #初始化权重、学习速度以及阈值
    weights_12 = [[0.5,0.4],[0.9,1.0]] #输入层和隐含层之间的权重,每个元素代表一个隐含层神经元的所有输入
    weights_23 = [[-1.2,1.1]]  #隐含层与输出层之间的权重,每个元素代表一个输出层的神经元的所有输入
    thresholds = [[0.8,-0.1],[0.3]] #从隐含层开始才有阈值
    learning_rate = 0.1

    #设置训练数据
    trainning_X = [[1,1],[0,0],[0,1],[1,0]]
    trainning_Y = [0,0,1,1]

    #其余变量设置
    bias = 1 #误差总和
    p = 1    #记录周期
    yjlen = len(thresholds[0]) #隐含层神经元个数
    yklen = len(thresholds[1]) #输出层神经元个数

    while bias 
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值