7.2 神经网络实现及和TensorFlow的对比
如图7-4所示,代码(chapter6_Create_AI_Framework版本的Neuron_Network_Entry.py)在只有1个隐藏层(Neuron_Network_Entry.py, hidden_layers=[3])的情况下,现在把时代从Epoch=10 000调整为Epoch=100 000,再次运行Neuron_Network_Entry.py,当运行到约28 700次的时候,发现运行结果达到了极限,误差值为0.160 314 984 681 597 44,之后误差值不再变化。将Neuron_Network_Entry.py程序停止运行。
在改进以后的代码(Artificial_Intelligence_Framework_Main.py)中修改时代的次数为10万次,即epoch=100 000,在Spyder界面右侧的Console页面中输出结果有两列,第一列是运行了多少次时代,第二列是计算的损失度值。随着运行的不断进行,损失度逐渐减小,这是损失度变化的核心趋势,运行结果如图7-5所示。
图7-4 运行到28 700次时代时的误差值
图7-5 损失度计算结果
这里运行10万次,运行次数相对比较多,当时代运行到59 700次的时候,损失度达到了0.000 100 172 235 589 972 6;继续运行,误差就达到了约0.000 01的精确度,这里9.999 915 058 051 979e–05使用了科学记数法的显示方式。当运行到10万次的时候,我们看一下损失度将达到什么程度,以及预测值是否接近实际值。最终运行结果如图7-6所示。
图7-6 时代运行10万次时的结果
运行结果是一个非常漂亮的结果!当第一行的实际值是0的时候,第一行的预测值是0.014 324 214 519 085 965;当第四行的实际值是0的时候,第四行的预测值是0.002 130 684 481 578 583;预测值已经非常非常接近实际值了。当第二行的实际值是1.0的时候,第二行的预测值是0.987 457 410 476 435 4;当第三行的实际值是1.0的时候,第三行的预测值是0.989 787 562 167 221 4,可以认为是0.99,已达到惊人的精确度。从阅读TensorFlow、PyTorch源代码的经验来看,盘古人工智能框架走过的路是最具技术含量的路。实际案例将比盘古人工智能框架的内容简单,例如,信用卡如何防止反欺诈,金融贷款的时候如何防止非法操作,推出产品如何判断用户的星级评价(一~五星级)。在判断用户评价的案例中,星级评价比用户是否喜欢这个商品的难度更大。