我对bp神经网络的原理来自于啃这里的代码:链接 https://www.cnblogs.com/charlotte77/p/5629865.html
bp神经网络的基本原理(BackPropagation)
- 对神经网络层各层的基本数据初始化
- 初始化神经网络各层的权重,根据随机数生成器进行先随机生成权重,这里的权重会依据后面的训练而调整。
- 输入数据的确定,输出数据的确定。例如分类问题就是输入对象的属性,确定好输出数据,输出数据是表示所有标签的概率的数组,概率最大的标签的值为预测的值,则给该输入的对象打上该标签值,这里说明为什么要给输出数据与输入数据:把神经网络当成一个分类器,我们首先要做的就是构建这个分类器,我们给的输入数据和输出数据就是为了搭建这个分裂器所给的训练数据和标签,这相当于一个监督学习的例子,我们要造神经网络的分类器就是最后要给各层设置正确的权重,我们要给真实的出输出数据是要求真实输出与神经网络训练的输出的误差,神经网络反向传播的精髓就是利用误差与权重的梯度来更新权重。
- 正向传播
根据 输入和初始化的权重,通过
∑
i
=
1
n
(
n
e
u
r
o
n
_
l
_
i
?
w
i
g
h
t
_
i
j
+
b
j
)
=
n
e
u
r
o
n
_
l
+
1
_
j
\sum_{i=1}^{n}({neuron\_l\_i*wight\_ij+b_j})=neuron\_l+1\_j
i=1∑n?(neuron_l_i?wight_ij+bj?)=neuron_l+1_j,(这一具体过程在:https://www.cnblogs.com/charlotte77/p/5629865.html),进行各层神经元的值的初始化,得到预测较差的输出,这个输出和真实应该的输出有差距,我们根据这个差距来进行反向传播,更新神经网络的权重。 - 反向传播
根据输出误差与某一权重的导数了,来对权重更新,具体更根据博客:https://www.cnblogs.com/charlotte77/p/5629865.html已经说的很清楚。 - 根据循环次数不断进行神经网络的正向传播和反向传播,当循环结束,即此神经网络训练完成。
BP神经网络的原理代码:
原理图参照博客https://www.cnblogs.com/charlotte77/p/5629865.html上的:
import random
import math
class NeuralNetwork:
LEARNING_RATE=0.5
def __init__(self,num_inputs,num_hidden,num_outputs,hidden_layer_weights=None,hidden_layer_bias=None,output_layer_weights=None,output_layer_bias=None):
'''
初始化神经网络所要用的数据
:param num_inputs:输入数据的个数
:param num_hidden:隐藏层神经院的个数
:param num_outputs:输出层神经元的个数
:param hidden_layer_weights:隐藏层的权重
:param hidden_layer_bias:隐藏层的偏置
:param output_layer_weights:输出层的权重
:param output_layer_bias:输出层的偏置
'''
#输入层的个数
self.num_inputs=num_inputs
#隐藏层
self.hidden_layer=NeuronLayer(num_hidden,hidden_layer_bias)#隐藏层神经元的数目,隐藏层的偏置
#输出层
self.output_layer=NeuronLayer(num_outputs,output_layer_bias)#输出层的神经元数目,输出层的偏置
#从输入到隐藏层的权重,初始化
self.init_weights_from_inputs_to_hidden_layer_neurons(hidden_layer_weights)
#从隐藏层到输出层的权重,初始化
self.init_weights_from_hidden_layer_neurons_to_output_layer_neurons(output_layer_weights)
# 从输入到隐藏层的权重,初始化
def init_weights_from_inputs_to_hidden_layer_neurons(self,hidden_layer_weights):
'''
输入层到隐藏层的权重
:param hidden_layer_weights: 隐藏层二点权重
:return:
'''
# 输入层到隐藏层所有权重的数目
weight_num=0
# 更新从输入到隐藏层的权重
for h in range(len(self.hidden_layer.neurons)):#隐藏层的神经元个数
for i in range(self.num_inputs):#输入层输入的个数
#如果当前层对应的权重为空
if not hidden_layer_weights:
#随机生成一个权重加入隐藏层的神经元对应权重中
self.hidden_layer.neurons[h].weights.append(random.random())
#如果当层当前输入对应的权重不为空
else:
#将这个权重值加入到一个新的数组中
self.hidden_layer.neurons[h].weights.append(hidden_layer_weights[weight_num])
#已更新的权重值+1
weight_num+=1
#从隐藏层到输出层的权重,初始化
def init_weights_from_hidden_layer_neurons_to_output_layer_neurons(self,output_layer_weights):
# 隐藏层到输出层所有权重的数目
weight_num=0
#更新 从隐藏层到输出层的权重
for o in range(len(self.output_layer.neurons)):#输出层的数目
for h in range(len(self.hidden_layer.neurons)):#隐藏层神经元数目
# 如果当层对应的权重为空
if not output_layer_weights:
#随机生成一个权重加入输出层的神经元对应权重中
self.output_layer.neurons[o].weights.append(random.random())
else:
#将这个权重值加入到一个新的数组中
self.output_layer.neurons[o].weights.append(output_layer_weights[weight_num])
#已完成的权重跟新+1
weight_num+=1
#向前传播
def feed_forward(self,inputs):
#输入层到隐藏层的前向传播的输出
hidden_layer_outputs=self.hidden_layer.feed_forward(inputs)
# 隐藏层到输出层的前向传播,得到输出层的结果
result=self.output_layer.feed_forward(hidden_layer_outputs)
# print(result)
return result
#训练集训练权重
def train(self,training_inputs,training_outputs):#训练的输入,训练的输出
#从输入前向传播
self.feed_forward(training_inputs)
#向后传播 更新各个权值的数值
# 1.输出层与隐藏层梯度的总和,(partial(E_total)/partial(out_oi)) * (partial(out_oi)/partial(net_oi))
# len(self.output_layer.neurons)=2==>输出层有两个神经元
pd_error_wrt_output_neuron_total_net_input=[0]*len(self.output_layer.neurons)#[0,0]==》一个矩阵*一个数==》表示将这个矩阵复制多少次
for o in range(len(self.output_layer.neurons)):#输出层的所有神经元
#(partial(E_total)/partial(out_oi)) * (partial(out_oi)/partial(net_oi)),其中E_total是输出层的每一个神经元的误差
pd_error_wrt_output_neuron_total_net_input[o]=self.output_layer.neurons[o].calculate_pd_error_wrt_total_net_input(training_outputs[o])
#2.隐含层神经元的梯度,
pd_errors_wrt_hidden_neuron_total_net_input=[0]*len(self.hidden_layer.neurons)
for h in range(len(self.hidden_layer.neurons)):#隐藏层神经元数目
# sum(partial(net_o[n]))/w_i_j)
d_error_wrt_hidden_neuron_output=0
for o in range(len(self.output_layer.neurons)):#输出层神经元数目
# print(self.output_layer.neurons[o].weights[h])
#隐藏层的神经元到输出层的神经元的权重
w_ho=self.output_layer.neurons[o].weights[h]
#隐藏层的神经元=sum(partial(E)/partial(net_o[n])*out_h1)=partial(Etotal)/partial(w_ho)
d_error_wrt_hidden_neuron_output+= pd_error_wrt_output_neuron_total_net_input[o]*w_ho
# d_error_wrt_hidden_neuron_output是隐藏层最初始的值经过激活函数sigmoid求得,还要再对sigmoid求一次导
#partial(out_hi)/partial(net_hi)
pd_errors_wrt_hidden_neuron_total_net_input[h]=d_error_wrt_hidden_neuron_output*self.hidden_layer.neurons[h].calculate_pd_total_net_input_wrt_input()
#3.更新隐藏层到输出层权重系数
for o in range(len(self.output_layer.neurons)):#输出层的神经元数目
for w_ho in range(len(self.output_layer.neurons[o].weights)):#输出层的神经元对应的权重数目=隐藏层的神经元的数目
#partial(net_oi)/partial(w_ho)
hidden_neuron_value=self.output_layer.neurons[o].calculate_pd_total_net_input_wrt_weight(w_ho)
#pd_error_weight=输出层的梯度 * 隐藏层的权重=(partial(E_total)/partial(net_oi))*(partial(net_oi)/partial(w_ho))=partial(E_total)/partial(w_ho)
pd_error_wrt_weight=pd_error_wrt_output_neuron_total_net_input[o]*hidden_neuron_value
# 更新隐藏层到输出层权重系数
# w_ho=w_ho-LEARNING_RATE*(partial(Etotal)/partial(w_ho))
self.output_layer.neurons[o].weights[w_ho] -= self.LEARNING_RATE * pd_error_wrt_weight
#4.更新输入层到隐含层的权重
for h in range(len(self.hidden_layer.neurons)):#隐藏层神经元的长度
for w_ih in range(len(self.hidden_layer.neurons[h].weights)):#隐含层权重的数组长度=输入数据的数目
#从输入partial(net_hi)/partial(w_ih)
input_neuron_value=self.hidden_layer.neurons[h].calculate_pd_total_net_input_wrt_weight(w_ih)
#(partial(Etotal)/partial(net_h1))*(partial(net_hi)/partial(w_ih))
pd_error_wrt_weight=pd_errors_wrt_hidden_neuron_total_net_input[h]*input_neuron_value
#更新输入层到隐含层的权重
#w_ih=w_ih-LEARNING_RATE*(partial(Etotal)/partial(w_ih))
self.hidden_layer.neurons[h].weights[w_ih]-=self.LEARNING_RATE* pd_error_wrt_weight
#求总误差
def calculate_total_error(self,training_sets):
'''
:param training_sets: 训练数据,为 [[输入层的数据],[输出层的数据]]
:return:
'''
#总误差初始化为0
total_error=0
#求总误差
training_inputs=training_sets[0]
training_target_outputs=training_sets[1]
# print(training_inputs)
# print("======================")
# print(training_outputs)
#前向传播,重新求跟新后的权重算出来输出
forward_output=self.feed_forward(training_inputs)
for o in range(len(training_target_outputs)):#输出神经元的长度
#计算误差,误差=((target-predict_output)**2)*0.5
total_error+=0.5*(training_target_outputs[o]-forward_output[o])**2
return total_error
# 神经元层
class NeuronLayer:
def __init__(self,num_neurons,bias):
'''
构建神经元层
:param num_neurons: 神经网络的数目
:param bias: 神经网络的偏置
'''
#同一层的神经元共享一个截距项,初始化这个截距值b
self.bias=bias if bias else random.random()
#每层的神经网络
self.neurons=[]
for i in range(num_neurons):#这层的神经元个数
# 给每个神经元赋予一个Neuron的空间初始化
self.neurons.append(Neuron(self.bias))
# 前馈
def feed_forward(self,inputs):
#装前馈的输出
outputs=[]
for neuron in self.neurons:#这层的所有神经元
#输出数组中加入神经元计算出来的值
outputs.append(neuron.calculate_output(inputs))
return outputs
#神经元对数据的处理
class Neuron:
def __init__(self,bias):
self.bias=bias
self.weights=[]
#通过神经元的激活函数sigmoid,得到激活后的输出output
def calculate_output(self,inputs):
self.inputs=inputs
#输入与权重相乘,相加得到相应的神经网络处理后的值
netReult=self.calculate_total_net_input()
# 经过sigmoid激活函数得到了输出output
self.output=self.squash(netReult)
return self.output
#把输入的值与神经网络的权重相乘,相加,得到神经元的值
def calculate_total_net_input(self):
total=0
for i in range(len(self.inputs)):#输入的数据个数
total+=self.inputs[i]*self.weights[i]
return total+self.bias
#激活函数sigmoid,
def squash(selfself,total_net_input):
#通过激活函数sigmoid更新当前神经元的数据
return 1/(1+math.exp(-total_net_input))
#计算(partial(E)/partial(out_o[n]))*(partial(out_o[n])/partial(net_o[n]))
def calculate_pd_error_wrt_total_net_input(self,target_output):
return self.calculate_pd_error_wrt_output(target_output)* self.calculate_pd_total_net_input_wrt_input()
# 是求partial(E_total)/partial(out_o[n])的公式的化简
#partial(E_total)/partial(out_o[n])是每层的误差与输出的微分
def calculate_pd_error_wrt_output(self,target_output):#真正的输出层的神经元的值
return -(target_output-self.output)
#求partial(out_o[n])/partial(net_o[n]),
# 因为out_o[n]代表net_o[n]通过激活函数sigmoid处理后的值
# 这个函数相当于对激活函数求导,求partial(out_o[n])与partial(net_o[n])的梯度
def calculate_pd_total_net_input_wrt_input(self):
return self.output*(1-self.output)
#返回inputs那层的神经元的值
def calculate_pd_total_net_input_wrt_weight(self, index):
return self.inputs[index]
#测试用例
def test():
#初始化神经网络
# 输入数据的个数,隐藏层神经网络的网络层的个数,输出层的层的个数, 隐藏层的权重,隐藏层的偏置,输出层的权重,输出层的偏置
nn=NeuralNetwork(2,2,2,hidden_layer_weights=[0.15,0.2,0.25,0.3],hidden_layer_bias=0.35,output_layer_weights=[0.4,0.45,0.5,0.55],output_layer_bias=0.6)
for i in range(1000):
nn.train([0.05,0.1],[0.01,0.09])#训练数据的输入值,训练数据的输出值(作为真正的输出值,不是预测的值)
print("误差:",nn.calculate_total_error([[0.05,0.1],[0.01,0.09]]))
if __name__ == '__main__':
test()
输出:可以看到调整后的权重的神经网络的输出与真实的输出的误差不断减小
C:\Users\Lenovo\Anaconda3\python.exe D:/python/python_programs/machine_learning/neuralNetwork/NeuralNetwork.py
误差: 0.4960456830021021
误差: 0.48381218249171354
误差: 0.4713283712447061
误差: 0.4586200467687115
误差: 0.44571657511439877
误差: 0.4326507015752039
误差: 0.41945825017315375
误差: 0.4061777118198354
误差: 0.3928497274191959
误差: 0.37951647889791607
误差: 0.3662210075924553
误差: 0.3530064849238631
误差: 0.33991546423172453
误差: 0.32698914453933914
误差: 0.31426667662916863
误差: 0.30178453913609504
误差: 0.28957600770148484
误差: 0.27767073408280607
误差: 0.2660944451328662
误差: 0.2548687644429703
误差: 0.24401115282378255
误差: 0.2335349581832809
误差: 0.22344956108331274
误差: 0.2137605994575575
误差: 0.20447025462712
误差: 0.19557758069628173
误差: 0.1870788604054236
误差: 0.17896797227682743
误差: 0.1712367561278006
误差: 0.1638753664884851
误差: 0.15687260593840313
误差: 0.15021623270848
误差: 0.1438932389781653
误差: 0.1378900980707858
误差: 0.13219298019255082
误差: 0.1267879374780843
误差: 0.12166105992364293
误差: 0.11679860434541273
误差: 0.11218709883679626
误差: 0.10781342535838655
误差: 0.10366488311781236
误差: 0.09972923531991015
误差: 0.09599474172147222
误差: 0.09245017923435733
误差: 0.0890848526059588
误差: 0.08588859698206805
误差: 0.082851773935132
误差: 0.07996526232844946
误差: 0.07722044518896276
误差: 0.07460919358083751
误差: 0.07212384831027889
误差: 0.06975720014916181
误差: 0.06750246914043612
误差: 0.06535328344076674
误差: 0.0633036580640692
误差: 0.061347973811921225
误差: 0.05948095661168489
误差: 0.05769765742899247
误差: 0.055993432876575475
误差: 0.05436392660489466
误差: 0.05280505153045116
误差: 0.05131297293393714
误差: 0.049884092441579174
误差: 0.04851503288831121
误差: 0.04720262405008109
误差: 0.04594388922404119
误差: 0.04473603262908907
误差: 0.043576427594774265
误差: 0.042462605503615525
误差: 0.04139224545007687
误差: 0.04036316457858048
误差: 0.039373309062789005
误差: 0.03842074568879773
误差: 0.037503654005703185
误差: 0.036620319008149826
误差: 0.03576912431680772
误差: 0.034948545824235254
误差: 0.03415714577516987
误差: 0.03339356725192917
误差: 0.03265652903725205
误差: 0.03194482082854588
误差: 0.031257298779106234
误差: 0.030592881343428843
误差: 0.029950545405225737
误差: 0.029329322668186643
误差: 0.028728296290882832
误差: 0.028146597748496004
误差: 0.02758340390526606
误差: 0.027037934282690912
误差: 0.026509448509578603
误差: 0.025997243941051313
误差: 0.025500653434532998
误差: 0.025019043271621168
误差: 0.024551811215552447
误差: 0.024098384694722787
误差: 0.023658219103421776
误差: 0.02323079621158742
误差: 0.022815622675988807
误差: 0.022412228645800024
误差: 0.02202016645604368
误差: 0.02163900940285933
误差: 0.02126835059499381
误差: 0.0209078018763174
误差: 0.020556992814549077
误差: 0.020215569751721514
误差: 0.01988319491224066
误差: 0.019559545564692745
误差: 0.019244313233827973
误差: 0.01893720295940498
误差: 0.018637932598817145
误差: 0.018346232170639788
误差: 0.018061843236439393
误差: 0.017784518318373063
误差: 0.01751402035028003
误差: 0.01725012216012604
误差: 0.016992605981811272
误差: 0.016741262994488627
误差: 0.016495892887667167
误差: 0.01625630345049311
误差: 0.016022310183710288
误差: 0.015793735932903317
误差: 0.01557041054172046
误差: 0.015352170523860818
误差: 0.015138858752691017
误差: 0.014930324167432115
误差: 0.01472642149492683
误差: 0.014527010986062187
误差: 0.014331958165983205
误差: 0.014141133597288776
误差: 0.01395441265545339
误差: 0.013771675315766695
误差: 0.01359280595112771
误差: 0.013417693140073364
误差: 0.013246229484458735
误差: 0.013078311436244425
误差: 0.01291383913287925
误差: 0.012752716240798585
误差: 0.01259484980658836
误差: 0.012440150115391912
误差: 0.012288530556163035
误差: 0.01213990749339213
误差: 0.011994200144955332
误差: 0.011851330465757069
误差: 0.01171122303685614
误差: 0.011573804959784027
误差: 0.011439005755780992
误差: 0.01130675726969176
误差: 0.011176993578277382
误差: 0.01104965090271436
误差: 0.010924667525064793
误差: 0.010801983708514054
误差: 0.010681541621183864
误差: 0.010563285263339703
误差: 0.01044716039782134
误差: 0.010333114483535268
误差: 0.010221096611856412
误差: 0.01011105744579525
误差: 0.010002949161794124
误差: 0.009896725394024062
误差: 0.00979234118106059
误差: 0.009689752914823314
误差: 0.009588918291670544
误差: 0.009489796265545676
误差: 0.009392347003077936
误差: 0.009296531840545089
误差: 0.009202313242610399
误差: 0.009109654762751015
误差: 0.009018521005299162
误差: 0.008928877589021377
误差: 0.008840691112165318
误差: 0.008753929118906857
误差: 0.008668560067133799
误差: 0.008584553297505912
误差: 0.008501879003733571
误差: 0.00842050820402088
误差: 0.008340412713621055
误差: 0.00826156511845516
误差: 0.008183938749747275
误差: 0.008107507659631408
误差: 0.008032246597688225
误差: 0.007958130988370926
误差: 0.007885136909282177
误差: 0.00781324107026556
误差: 0.007742420793276761
误差: 0.007672653993001455
误差: 0.0076039191581884925
误差: 0.007536195333668015
误差: 0.007469462103026386
误差: 0.007403699571910149
误差: 0.007338888351933422
误差: 0.007275009545163566
误差: 0.007212044729161755
误差: 0.007149975942555613
误差: 0.007088785671122583
误差: 0.007028456834363208
误差: 0.006968972772544907
误差: 0.006910317234197281
误差: 0.006852474364041118
误差: 0.006795428691333956
误差: 0.0067391651186157865
误差: 0.006683668910839241
误差: 0.006628925684869345
误差: 0.006574921399338437
误差: 0.006521642344842638
误差: 0.006469075134466675
误差: 0.006417206694624605
误差: 0.006366024256204356
误差: 0.006315515346004649
误差: 0.006265667778453243
误差: 0.006216469647596002
误差: 0.006167909319346651
误差: 0.006119975423987543
误差: 0.006072656848912176
误差: 0.006025942731600594
误差: 0.0059798224528190575
误差: 0.0059342856300358985
误差: 0.0058893221110456785
误差: 0.005844921967794134
误差: 0.005801075490396658
误差: 0.005757773181343495
误差: 0.005715005749884825
误差: 0.005672764106589543
误差: 0.005631039358071454
误差: 0.005589822801877113
误差: 0.0055491059215295535
误差: 0.005508880381722513
误差: 0.005469138023660008
误差: 0.005429870860536078
误差: 0.005391071073150068
误差: 0.005352731005652627
误差: 0.005314843161418133
误差: 0.005277400199039101
误差: 0.005240394928438591
误差: 0.005203820307096523
误差: 0.005167669436386199
误差: 0.005131935558017236
误差: 0.0050966120505814795
误差: 0.0050616924261984095
误差: 0.00502717032725686
误差: 0.004993039523249742
误差: 0.004959293907698912
误差: 0.0049259274951670715
误差: 0.004892934418354075
误差: 0.00486030892527469
误差: 0.004828045376515447
误差: 0.004796138242567829
误差: 0.004764582101235477
误差: 0.004733371635113112
误差: 0.004702501629134732
误差: 0.0046719669681890745
误差: 0.004641762634800185
误差: 0.004611883706870993
误差: 0.004582325355488031
误差: 0.004553082842785324
误差: 0.004524151519865704
误差: 0.0044955268247776565
误差: 0.004467204280546191
误差: 0.004439179493255869
误差: 0.004411448150184605
误差: 0.004384006017986518
误差: 0.00435684894092256
误差: 0.004329972839137272
误差: 0.004303373706980471
误差: 0.004277047611372381
误差: 0.004250990690211066
误差: 0.004225199150820764
误差: 0.00419966926844004
误差: 0.004174397384748495
误差: 0.004149379906431017
误差: 0.004124613303778307
误差: 0.004100094109322848
误差: 0.0040758189165090945
误差: 0.0040517843783969875
误差: 0.004027987206397888
误差: 0.00400442416904188
误差: 0.003981092090775633
误差: 0.00395798785078997
误差: 0.003935108381876195
误差: 0.0039124506693105476
误差: 0.0038900117497657977
误差: 0.003867788710249352
误差: 0.0038457786870671226
误差: 0.003823978864812352
误差: 0.003802386475378841
误差: 0.0037809987969977905
误差: 0.0037598131532976514
误差: 0.0037388269123863555
误差: 0.0037180374859553554
误差: 0.003697442328404782
误差: 0.0036770389359892437
误差: 0.0036568248459836325
误差: 0.003636797635868524
误差: 0.0036169549225344376
误差: 0.003597294361504697
误差: 0.0035778136461761946
误差: 0.0035585105070776836
误差: 0.00353938271114515
误差: 0.003520428061013741
误差: 0.003501644394325874
误差: 0.0034830295830550876
误差: 0.003464581532845198
误差: 0.003446298182364425
误差: 0.0034281775026740098
误差: 0.0034102174966110584
误差: 0.0033924161981851307
误差: 0.00337477167198833
误差: 0.0033572820126184645
误差: 0.00333994534411499
误差: 0.0033227598194073968
误差: 0.0033057236197757524
误差: 0.00328883495432302
误差: 0.0032720920594589845
误差: 0.0032554931983953235
误差: 0.003239036660651726
误差: 0.0032227207615726236
误差: 0.003206543841854427
误差: 0.0031905042670828257
误差: 0.003174600427280092
误差: 0.0031588307364620017
误差: 0.0031431936322042046
误差: 0.0031276875752177828
误差: 0.003112311048933832
误差: 0.0030970625590967444
误差: 0.0030819406333660745
误差: 0.0030669438209267293
误差: 0.0030520706921073545
误差: 0.0030373198380065575
误差: 0.0030226898701270245
误差: 0.003008179420017093
误差: 0.0029937871389197706
误差: 0.0029795116974289976
误差: 0.0029653517851528878
误差: 0.002951306110383904
误差: 0.0029373733997757443
误差: 0.0029235523980267754
误差: 0.0029098418675698786
误差: 0.0028962405882685975
误差: 0.0028827473571193295
误差: 0.0028693609879595567
误差: 0.0028560803111818884
误差: 0.0028429041734537963
误差: 0.0028298314374429435
误差: 0.0028168609815479493
误差: 0.0028039916996344815
误差: 0.0027912225007765408
误差: 0.0027785523090028286
误差: 0.0027659800630481005
误差: 0.002753504716109354
误差: 0.0027411252356067885
误差: 0.00272884060294937
误差: 0.0027166498133049865
误差: 0.0027045518753750115
误差: 0.002692545811173182
误差: 0.0026806306558087795
误差: 0.0026688054572739147
误差: 0.0026570692762348733
误差: 0.0026454211858274743
误差: 0.0026338602714562585
误差: 0.002622385630597495
误差: 0.002610996372605933
误差: 0.002599691618525137
误差: 0.002588470500901428
误差: 0.0025773321636012605
误差: 0.002566275761632058
误差: 0.002555300460966324
误差: 0.0025444054383690663
误差: 0.0025335898812283725
误差: 0.0025228529873891356
误差: 0.0025121939649898417
误差: 0.0025016120323023217
误差: 0.0024911064175744606
误差: 0.002480676358875774
误差: 0.0024703211039457775
误差: 0.002460039910045125
误差: 0.0024498320438094334
误差: 0.0024396967811057273
误差: 0.002429633406891514
误差: 0.0024196412150763276
误差: 0.0024097195083857834
误差: 0.00239986759822807
误差: 0.002390084804562788
误差: 0.002380370455772138
误差: 0.0023707238885343797
误差: 0.0023611444476995228
误差: 0.0023516314861672227
误差: 0.0023421843647667973
误差: 0.00233280245213937
误差: 0.0023234851246220507
误差: 0.0023142317661341448
误差: 0.002305041768065335
误差: 0.002295914529165824
误差: 0.0022868494554383278
误差: 0.0022778459600319738
误差: 0.002268903463138019
误差: 0.0022600213918873274
误差: 0.002251199180249644
误差: 0.0022424362689345443
误差: 0.002233732105294098
误差: 0.002225086143227191
误差: 0.00221649784308543
误差: 0.002207966671580669
误差: 0.0021994921016941045
误差: 0.0021910736125868397
误差: 0.002182710689512017
误差: 0.002174402823728387
误差: 0.0021661495124152964
误差: 0.0021579502585891406
误差: 0.002149804571021162
误差: 0.0021417119641566236
误差: 0.0021336719580353244
误差: 0.0021256840782134037
误差: 0.00211774785568645
误差: 0.002109862826813857
误差: 0.002102028533244425
误差: 0.002094244521843158
误差: 0.0020865103446192834
误差: 0.0020788255586554065
误差: 0.0020711897260378264
误差: 0.002063602413787983
误差: 0.002056063193794991
误差: 0.0020485716427492834
误差: 0.002041127342077282
误差: 0.0020337298778771514
误差: 0.0020263788408555524
误差: 0.0020190738262654117
误差: 0.002011814433844667
误差: 0.0020046002677560114
误差: 0.001997430936527556
误差: 0.001990306052994435
误差: 0.0019832252342413615
误差: 0.001976188101546035
误差: 0.0019691942803234616
误差: 0.0019622434000711574
误差: 0.001955335094315162
误差: 0.001948469000556938
误差: 0.0019416447602210642
误差: 0.0019348620186037326
误差: 0.001928120424822087
误差: 0.0019214196317642622
误差: 0.0019147592960402785
误差: 0.0019081390779336156
误差: 0.0019015586413535747
误差: 0.0018950176537883417
误差: 0.0018885157862587661
误差: 0.0018820527132728578
误差: 0.001875628112780961
误差: 0.00186924166613161
误差: 0.0018628930580280253
误差: 0.0018565819764853203
误差: 0.0018503081127882956
误差: 0.0018440711614498815
误差: 0.001837870820170227
误差: 0.001831706789796353
误差: 0.0018255787742824554
误差: 0.0018194864806507366
误差: 0.00181342961895289
误差: 0.0018074079022320968
误差: 0.0018014210464855946
误差: 0.0017954687706278182
误差: 0.0017895507964540587
误差: 0.0017836668486046667
误差: 0.0017778166545297641
误差: 0.0017719999444544949
误差: 0.0017662164513447564
误差: 0.001760465910873441
误差: 0.0017547480613871668
误差: 0.0017490626438734812
误差: 0.0017434094019285393
误差: 0.0017377880817252649
误差: 0.0017321984319819408
误差: 0.0017266402039312592
误差: 0.0017211131512898303
误差: 0.0017156170302281008
误差: 0.0017101515993407168
误差: 0.001704716619617305
误差: 0.0016993118544136668
误差: 0.0016939370694233668
误差: 0.001688592032649748
误差: 0.0016832765143783208
误差: 0.001677990287149554
误差: 0.0016727331257320223
误差: 0.001667504807095962
误差: 0.0016623051103871799
误差: 0.001657133816901313
误差: 0.0016519907100584741
误差: 0.0016468755753782248
误差: 0.0016417882004549076
误差: 0.001636728374933318
误差: 0.0016316958904847001
误差: 0.0016266905407830979
误差: 0.0016217121214819924
误差: 0.0016167604301913071
误差: 0.0016118352664546793
误差: 0.0016069364317270766
误差: 0.001602063729352702
误差: 0.0015972169645432116
误差: 0.0015923959443561975
误差: 0.001587600477674004
误差: 0.0015828303751828049
误差: 0.00157808544935196
误差: 0.0015733655144136599
误差: 0.0015686703863428406
误差: 0.0015639998828373665
误差: 0.00155935382329848
误差: 0.0015547320288115038
误差: 0.0015501343221268197
误差: 0.0015455605276410676
误差: 0.0015410104713786327
误差: 0.0015364839809733468
误差: 0.0015319808856504413
误差: 0.001527501016208751
误差: 0.0015230442050031276
误差: 0.0015186102859270974
误差: 0.0015141990943957615
误差: 0.0015098104673288795
误差: 0.0015054442431342101
误差: 0.0015011002616910705
误差: 0.0014967783643340697
误差: 0.0014924783938370908
误差: 0.001488200194397468
误差: 0.0014839436116203754
误差: 0.0014797084925033943
误差: 0.0014754946854213112
误差: 0.0014713020401110818
误差: 0.001467130407657013
误差: 0.001462979640476113
误差: 0.0014588495923036394
误差: 0.0014547401181788364
误差: 0.0014506510744308398
误差: 0.0014465823186647702
误差: 0.001442533709748005
误差: 0.0014385051077966083
误差: 0.00143449637416196
误差: 0.0014305073714175197
误差: 0.0014265379633457847
误差: 0.001422588014925398
误差: 0.0014186573923184208
误差: 0.001414745962857767
误差: 0.0014108535950347798
误差: 0.001406980158486998
误差: 0.0014031255239860259
误差: 0.001399289563425597
误差: 0.0013954721498097603
误差: 0.0013916731572412243
误差: 0.0013878924609098313
误差: 0.0013841299370811993
误差: 0.0013803854630854702
误差: 0.00137665891730623
误差: 0.0013729501791695253
误差: 0.0013692591291330704
误差: 0.001365585648675515
误差: 0.0013619296202859075
误差: 0.0013582909274532501
误差: 0.0013546694546561786
误差: 0.001351065087352803
误差: 0.0013474777119706284
误差: 0.0013439072158966095
误差: 0.001340353487467349
误差: 0.00133681641595939
误差: 0.0013332958915796193
误差: 0.0013297918054558124
误差: 0.0013263040496272638
误差: 0.0013228325170355484
误差: 0.0013193771015153923
误差: 0.0013159376977856278
误差: 0.0013125142014402888
误差: 0.0013091065089398015
误差: 0.0013057145176022544
误差: 0.0013023381255948114
误差: 0.0012989772319251993
误差: 0.0012956317364333032
误差: 0.0012923015397828604
误差: 0.00128898654345325
误差: 0.0012856866497313816
误差: 0.0012824017617036798
误差: 0.0012791317832481623
误差: 0.0012758766190265913
误差: 0.0012726361744767548
误差: 0.0012694103558048054
误差: 0.0012661990699776924
误差: 0.0012630022247156934
误差: 0.001259819728485025
误差: 0.0012566514904905428
误差: 0.001253497420668511
误差: 0.001250357429679469
误差: 0.0012472314289011925
误差: 0.0012441193304216934
误差: 0.0012410210470323463
误差: 0.0012379364922210597
误差: 0.0012348655801655436
误差: 0.001231808225726651
误差: 0.0012287643444417855
误差: 0.001225733852518389
误差: 0.0012227166668275058
误差: 0.0012197127048974264
误差: 0.0012167218849073785
误差: 0.0012137441256813162
误差: 0.0012107793466817603
误差: 0.0012078274680037135
误差: 0.001204888410368657
误差: 0.001201962095118585
误差: 0.0011990484442101375
误差: 0.001196147380208773
误差: 0.0011932588262830164
误差: 0.001190382706198779
误差: 0.0011875189443137334
误差: 0.0011846674655717384
误差: 0.001181828195497348
误差: 0.00117900106019037
误差: 0.0011761859863204764
误差: 0.0011733829011219016
误差: 0.001170591732388149
误差: 0.0011678124084668125
误差: 0.0011650448582544136
误差: 0.0011622890111913132
误差: 0.0011595447972566654
误差: 0.0011568121469634554
误差: 0.001154090991353549
误差: 0.001151381261992832
误差: 0.0011486828909663771
误差: 0.0011459958108736886
误差: 0.0011433199548239726
误差: 0.0011406552564314685
误差: 0.0011380016498108408
误差: 0.0011353590695726001
误差: 0.0011327274508185973
误差: 0.0011301067291375373
误差: 0.0011274968406005741
误差: 0.0011248977217569174
误差: 0.0011223093096295155
误差: 0.00111973154171077
误差: 0.0011171643559582975
误差: 0.0011146076907907333
误差: 0.0011120614850835923
误差: 0.001109525678165151
误差: 0.0011070002098124056
误差: 0.0011044850202470374
误差: 0.0011019800501314383
误差: 0.001099485240564788
误差: 0.0010970005330791497
误差: 0.0010945258696356225
误差: 0.0010920611926205305
误差: 0.0010896064448416445
误差: 0.0010871615695244561
误差: 0.0010847265103084856
误差: 0.0010823012112436106
误差: 0.0010798856167864713
误差: 0.001077479671796872
误差: 0.0010750833215342397
误差: 0.001072696511654131
误差: 0.0010703191882047473
误差: 0.0010679512976235006
误差: 0.0010655927867336264
误差: 0.0010632436027408019
误差: 0.001060903693229827
误差: 0.0010585730061613288
误差: 0.0010562514898684895
误差: 0.0010539390930538255
误差: 0.0010516357647859906
误差: 0.0010493414544966028
误差: 0.001047056111977126
误差: 0.0010447796873757592
误差: 0.0010425121311943729
误差: 0.0010402533942854692
误差: 0.0010380034278491771
误差: 0.001035762183430266
误差: 0.001033529612915219
误差: 0.0010313056685292944
误差: 0.001029090302833648
误差: 0.0010268834687224677
误差: 0.001024685119420157
误差: 0.001022495208478517
误差: 0.0010203136897739735
误差: 0.0010181405175048422
误差: 0.001015975646188593
误差: 0.001013819030659173
误差: 0.0010116706260643292
误差: 0.0010095303878629735
误差: 0.001007398271822566
误差: 0.001005274234016533
误差: 0.0010031582308216993
误差: 0.0010010502189157532
误差: 0.0009989501552747344
误差: 0.0009968579971705487
误差: 0.0009947737021685007
误差: 0.0009926972281248526
误差: 0.000990628533184417
误差: 0.0009885675757781611
误差: 0.0009865143146208352
误差: 0.000984468708708632
误差: 0.00098243071731686
误差: 0.0009804002999976435
误差: 0.0009783774165776488
误差: 0.0009763620271558255
误差: 0.0009743540921011679
误差: 0.0009723535720505128
误差: 0.0009703604279063343
误差: 0.0009683746208345873
误差: 0.0009663961122625515
误差: 0.0009644248638766952
误差: 0.0009624608376205816
误差: 0.0009605039956927657
误差: 0.0009585543005447403
误差: 0.0009566117148788738
误差: 0.0009546762016463861
误差: 0.0009527477240453429
误差: 0.0009508262455186559
误差: 0.0009489117297521186
误差: 0.0009470041406724463
误差: 0.000945103442445345
误差: 0.0009432095994735927
误差: 0.0009413225763951446
误差: 0.0009394423380812427
误差: 0.0009375688496345621
误差: 0.0009357020763873611
误差: 0.0009338419838996526
误差: 0.000931988537957392
误差: 0.0009301417045706837
误差: 0.0009283014499720064
误差: 0.0009264677406144403
误差: 0.0009246405431699384
误差: 0.0009228198245275841
误差: 0.0009210055517918873
误差: 0.000919197692281082
误差: 0.0009173962135254465
误差: 0.00091560108326564
误差: 0.0009138122694510502
误差: 0.0009120297402381594
误差: 0.0009102534639889199
误差: 0.0009084834092691588
误差: 0.0009067195448469748
误差: 0.0009049618396911723
误差: 0.0009032102629696923
误差: 0.0009014647840480742
误差: 0.0008997253724879142
误差: 0.0008979919980453471
误差: 0.0008962646306695501
误差: 0.000894543240501237
误差: 0.0008928277978711862
误差: 0.0008911182732987835
误差: 0.0008894146374905576
误差: 0.0008877168613387503
误差: 0.0008860249159198861
误差: 0.0008843387724933636
误差: 0.0008826584025000534
误差: 0.0008809837775609108
误差: 0.0008793148694755991
误差: 0.0008776516502211306
误差: 0.0008759940919505164
误差: 0.0008743421669914226
误差: 0.000872695847844848
误差: 0.0008710551071838106
误差: 0.0008694199178520376
误差: 0.0008677902528626891
误差: 0.0008661660853970585
误差: 0.0008645473888033188
误差: 0.00086293413659526
误差: 0.0008613263024510432
误差: 0.0008597238602119629
误差: 0.0008581267838812292
误差: 0.0008565350476227466
误差: 0.0008549486257599187
误差: 0.000853367492774449
误差: 0.0008517916233051633
误差: 0.0008502209921468371
误差: 0.0008486555742490324
误差: 0.0008470953447149524
误差: 0.0008455402788002947
误差: 0.0008439903519121174
误差: 0.0008424455396077295
误差: 0.0008409058175935681
误差: 0.0008393711617241022
误差: 0.0008378415480007409
误差: 0.0008363169525707416
误差: 0.0008347973517261486
误差: 0.0008332827219027244
误差: 0.0008317730396788892
误差: 0.0008302682817746844
误差: 0.0008287684250507282
误差: 0.0008272734465071902
误差: 0.0008257833232827707
误差: 0.0008242980326536932
误差: 0.0008228175520327033
误差: 0.0008213418589680637
误差: 0.0008198709311425877
误差: 0.0008184047463726485
误差: 0.0008169432826072185
误差: 0.0008154865179269065
误差: 0.0008140344305430016
误差: 0.0008125869987965417
误差: 0.0008111442011573643
误差: 0.0008097060162231885
误差: 0.0008082724227186868
误差: 0.0008068433994945827
误差: 0.0008054189255267362
误差: 0.0008039989799152556
误差: 0.0008025835418835988
误差: 0.0008011725907777021
误差: 0.0007997661060650951
误差: 0.000798364067334043
误差: 0.0007969664542926834
误差: 0.0007955732467681642
误差: 0.0007941844247058136
误差: 0.0007927999681682933
误差: 0.0007914198573347683
误差: 0.0007900440725000788
误差: 0.000788672594073925
误差: 0.000787305402580061
误差: 0.0007859424786554814
误差: 0.0007845838030496285
误差: 0.0007832293566236042
误差: 0.0007818791203493748
误差: 0.0007805330753090076
误差: 0.0007791912026938876
误差: 0.0007778534838039563
误差: 0.0007765199000469513
误差: 0.0007751904329376595
误差: 0.0007738650640971564
误差: 0.0007725437752520853
误差: 0.0007712265482339049
误差: 0.0007699133649781668
误差: 0.0007686042075238002
误差: 0.0007672990580123838
误差: 0.000765997898687442
误差: 0.0007647007118937367
误差: 0.0007634074800765727
误差: 0.0007621181857810923
误差: 0.000760832811651602
误差: 0.0007595513404308817
误差: 0.0007582737549595076
误差: 0.0007570000381751841
误差: 0.0007557301731120711
误差: 0.0007544641429001329
误差: 0.0007532019307644718
误差: 0.0007519435200246901
误差: 0.0007506888940942327
误差: 0.0007494380364797535
误差: 0.0007481909307804815
误差: 0.0007469475606875899
误差: 0.0007457079099835677
误差: 0.0007444719625416059
误差: 0.0007432397023249811
误差: 0.0007420111133864425
误差: 0.0007407861798676094
误差: 0.0007395648859983703
误差: 0.0007383472160962877
误差: 0.0007371331545660062
误差: 0.0007359226858986716
误差: 0.0007347157946713381
误差: 0.0007335124655464027
误差: 0.0007323126832710298
误差: 0.0007311164326765788
误差: 0.0007299236986780467
误差: 0.0007287344662735025
误差: 0.0007275487205435395
误差: 0.0007263664466507213
误差: 0.0007251876298390363
误差: 0.0007240122554333551
误差: 0.0007228403088388941
误差: 0.0007216717755406847
误差: 0.0007205066411030386
误差: 0.0007193448911690267
误差: 0.000718186511459959
误差: 0.0007170314877748601
误差: 0.000715879805989968
误差: 0.0007147314520582178
误差: 0.0007135864120087358
误差: 0.0007124446719463411
误差: 0.0007113062180510502
误差: 0.0007101710365775789
误差: 0.0007090391138548557
误差: 0.0007079104362855355
误差: 0.0007067849903455155
误差: 0.0007056627625834616
误差: 0.0007045437396203265
误差: 0.000703427908148884
误差: 0.0007023152549332608
误差: 0.0007012057668084725
误差: 0.0007000994306799587
误差: 0.0006989962335231319
误差: 0.0006978961623829194
误差: 0.0006967992043733229
误差: 0.0006957053466769547
误差: 0.0006946145765446102
误差: 0.0006935268812948203
误差: 0.0006924422483134186
误差: 0.0006913606650531038
误差: 0.0006902821190330147
误差: 0.0006892065978382978
误差: 0.0006881340891196891
误差: 0.0006870645805930935
误差: 0.0006859980600391609
误差: 0.0006849345153028821
误差: 0.0006838739342931688
误差: 0.0006828163049824499
误差: 0.0006817616154062707
误差: 0.0006807098536628815
误差: 0.0006796610079128472
误差: 0.0006786150663786478
误差: 0.0006775720173442843
误差: 0.000676531849154894
误差: 0.0006754945502163583
误差: 0.0006744601089949203
误差: 0.0006734285140168028
误差: 0.0006723997538678286
误差: 0.0006713738171930511
误差: 0.0006703506926963751
误差: 0.0006693303691401862
误差: 0.0006683128353449868
误差: 0.0006672980801890316
误差: 0.0006662860926079607
误差: 0.0006652768615944457
误差: 0.0006642703761978291
误差: 0.000663266625523775
误差: 0.0006622655987339093
误差: 0.0006612672850454795
误差: 0.0006602716737310033
误差: 0.0006592787541179244
误差: 0.0006582885155882739
误差: 0.0006573009475783306
误差: 0.00065631603957828
误差: 0.0006553337811318906
误差: 0.0006543541618361691
误差: 0.000653377171341044
误差: 0.00065240279934903
误差: 0.0006514310356149047
误差: 0.0006504618699453913
误差: 0.0006494952921988332
误差: 0.0006485312922848818
误差: 0.0006475698601641792
误差: 0.0006466109858480369
误差: 0.0006456546593981462
误差: 0.0006447008709262437
误差: 0.0006437496105938296
误差: 0.0006428008686118405
误差: 0.0006418546352403677
误差: 0.0006409109007883487
误差: 0.0006399696556132633
误差: 0.0006390308901208509
误差: 0.0006380945947648119
误差: 0.0006371607600465113
误差: 0.0006362293765146992
误差: 0.0006353004347652111
误差: 0.0006343739254406985
误差: 0.0006334498392303336
误差: 0.0006325281668695336
误差: 0.0006316088991396802
误差: 0.0006306920268678417
误差: 0.0006297775409265006
误差: 0.0006288654322332793
误差: 0.0006279556917506672
误差: 0.0006270483104857522
误差: 0.0006261432794899559
误差: 0.0006252405898587651
误差: 0.0006243402327314679
误差: 0.0006234421992908925
误差: 0.0006225464807631509
误差: 0.0006216530684173758
误差: 0.0006207619535654632
误差: 0.0006198731275618235
误差: 0.0006189865818031249
误差: 0.0006181023077280432
误差: 0.0006172202968170123
误差: 0.0006163405405919769
误差: 0.0006154630306161477
误差: 0.000614587758493752
误差: 0.0006137147158698015
误差: 0.0006128438944298396
误差: 0.0006119752858997126
误差: 0.0006111088820453245
误差: 0.0006102446746724057
误差: 0.000609382655626279
误差: 0.0006085228167916234
误差: 0.0006076651500922473
误差: 0.0006068096474908556
误差: 0.0006059563009888225
误差: 0.0006051051026259687
误差: 0.0006042560444803334
误差: 0.0006034091186679529
误差: 0.000602564317342635
误差: 0.0006017216326957459
误差: 0.0006008810569559849
误差: 0.0006000425823891712
误差: 0.000599206201298027
误差: 0.0005983719060219625
误差: 0.0005975396889368667
误差: 0.0005967095424548905
误差: 0.0005958814590242436
误差: 0.0005950554311289779
误差: 0.0005942314512887882
误差: 0.0005934095120588038
误差: 0.0005925896060293815
误差: 0.0005917717258259082
误差: 0.0005909558641085936
误差: 0.0005901420135722752
误差: 0.0005893301669462189
误差: 0.0005885203169939134
误差: 0.0005877124565128879
误差: 0.000586906578334509
误差: 0.0005861026753237829
Process finished with exit code 0
|