看了三章的西瓜书,第七章还没来得及写笔记。这些个笔记就是当作复习了,写的很简略,很多细节特别是公式都没写出来,权当自娱自乐帮助自己再过一遍书本的概念。另外,除了西瓜书,David Silver的RL课程我也把动态规划看了。
这周重新捡起python,试着写了写BP算法。我寻思好歹以前用python写过结构力学算桁架受力的小程序,编个神经网络的基础算法应该能顺利吧,然而事实打脸了。。。自己闷头写了半天,程序却老出岔子。我的思路是先把一个西瓜的输出值弄出来,再用循环结构生成17个西瓜的输出,最后再套一个循环条件完成多次训练。然而这种自底向上的思路好像在BP算法这不太灵,弄出一个西瓜的输出很容易,然而再套上两层循环结构总是有点地方出了问题,不是初始化数组的语句放错了循环层次的位置就是数组下标弄混,毕竟循环层次太多了(最多五层)。。。最后忙活了一整天就憋出个半成品,只能去网上找找别人的算法看思路。参考了别人的算法才恍然大悟,发现了自己编程思想上有很多问题。一是没有用向量点积的意识,总是自己整个两层循环用数组完成向量点积的操作,这么弄下标容易弄混不说,循环层次太多也整的人头大。二是循环结构的设计,我编程往往先上手把最内部的代码敲好再从个例往总体推,一开始并不考虑总体的结构,这样编程往往会导致结构混乱逻辑也不清晰,到最后别说给别人看了,自己都晕。。。我觉得解决这个问题的办法是先把整体大概的层次结构设计好,细节先用伪代码代替,然后再一个个把伪代码的坑填上,这么来效果应该会好一点。唉,果然软件工程还是挺有用的(这书我看的时候感觉像天书一样,全是管理学没有多少实际编程的东西),我写个小算法都把自己整晕了,大型项目不按软件工程的思想来那更难上加难。
其他生活方面,这周把科目一过了,科目二所有科目都练的差不多,接下来不用天天往驾校跑了。接下来就好好看书天天锻炼了。