(30)损失度代码运行
接下来绘制我们AI案例的图形。
通过plt.plot(loss_log) 传进要进行可视化的数据集loss_log,然后调用
plt.show() 显示可视化结果。
运行Create_AI_Framework_In5Classes(Day4)的Neuron_Network_Entry.py代码,显示结果如下:
+1 V1 V2
打印出Epoch的损失度,注意,每隔100个Epoch打印一次误差。并打印一行语句:“Congratulations! All Epoch is completed!!!”,这里的损失度没有改变,损失度的绘图结果为:
Neuron_Network_Entry.py中运用BackPropagation.applyBackPragation,然后根据计算后的结果计算一次损失度,每隔100次Epoch打印一次,但损失度并没有做改变,那没有做改变的原因是什么?是因为之前在BackPropagation.py中实现的Back Propagation算法并没有实际更新我们的神经网络,但BackPropagation.py代码中实现的确实是Back Propagation的过程。BackPropagation.py代码中有一个非常小的细节要修改,我们将在下一章节进行修改,修改代码以后,损失度结果图形将立即改变,最初的时候曲线可能非常高,然后是一个渐渐的降低的过程。改进优化的结果可能精确度在95%以上,误差在5%以内。
至此,从编写框架的角度讲,我们已经走完了Tensorflow、Pytorch最原始的第一步。以后除了精确度达到95%以上,甚至要达到99.5%以上,需要怎么做?作为人工智能的开发者,将对这个特别感兴趣,一生将围绕降低损失度工作,就像损失度Loss就是所有AI框架终身的魔咒一样,所有的框架都想在最短时间内最大程度的降低损失度,包括使用不同的学习率、激活函数等,都是为最大程度的降低损失度,例如使用Sigmoid计算的损失度,使用ReLU的方式计算的损失度,损失度不一样,都是为了最快时间最大程度的降低损失度,接近真实值。这是所有的框架,包括Tensorflow、Pytorch,终身奋斗的目标!怎么在最短时间(毫秒级别),训练最大程度的符合真实的情况,最好没有损失度,这也是人工智能应用开发者终身的的魔咒!