跟上次一样,跟着《人工智能》这本书中所说的步骤,一步一步敲出来的
敲完之后,运行起来发现训练周期竟然达到了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