前些天在学习胶囊网络算法的过程中都是对照着别人的算法,抄一行理解一行,几天之后算是基本理解了其中的内容,就开始尝试自己从头编写算法。
在编写算法的过程中,可谓是遇上了不少的坑,在此总结一下,也给刚开始学习人工智能编程的同学一点参考。
其中最大的一个坑就是,不要凭着记忆写代码。刚开始学习的过程中,看懂了一点别人的代码,开始尝试自己编写的时候,其实很大一部分是凭着记忆去编写:别人怎么定义一个类,自己就怎么定义一个类,别人程序什么样的流程,自己程序也写什么样的流程,甚至连着变量名都写一样的,在这样的过程中。但是这样最大的一个问题是,人的记忆是有限的,而一个人工智能算法程序中往往有着非常多的细节,凭着记忆几乎不可能将细节记住。我的这次实践就是一个很好的例子:我在尝试凭着记忆编写胶囊网络的算法时,整体的逻辑都没有问题,但是运行的结果却非常不靠谱。错误的原因是在程序的每个部分最后,都需要用一下压缩函数,把结果压缩到0-1之间,而这个不起眼步骤却被我的记忆力忽略了。
如果不是靠着记忆,而是靠着自己的理解一步一步哦那个开始推出结果,那这种错误就自然可以避免。试想一下,如果在写每一个函数的过程中,都想着原始数据经过到这一步会变成什么,与最终的结果相比还差多少。这样下来就会自然而然的知道自己在下一步需要做什么,也能避免不少错误了。记得学习Python的时候,李骏老师说过编写程序的时候要把计算机当成是一个会时刻正确回应你的人,我们永远要想着敲下的这一行代码在执行后会给我们返回什么。更深层次的一个理解就是把变成当成做菜,不能只盯着细节,还要有整体感,知道每一步做的在整体中意味着什么。
网友评论