一、NumPy
1.1 参考资料
这篇文章写得实在是太好了图解链接 。
1.2 Array Matrix
这两种东西是不一样的,np.array
也可以有多维,但是它的 *
就是点对点乘法,而 @
是点乘。但是对于 np.matrix
来说,无论是 *
还是 @
都是点乘,sp.Matrix
同理。有如下演示
这篇文章写得实在是太好了图解链接 。
这两种东西是不一样的,np.array
也可以有多维,但是它的 *
就是点对点乘法,而 @
是点乘。但是对于 np.matrix
来说,无论是 *
还是 @
都是点乘,sp.Matrix
同理。有如下演示
真的是十分开心的,毕竟自己终于搭建了一个“神经网络”,其成就感,简直和自己第一次写 Hello, world. ,第一次写字典树,第一次写出流水线 CPU,第一次在 ARM 上移植操作系统,第一次写出编译器后端一样快乐。当我的电脑的 CPU 利用率被这个东西拉满,风扇开始轰鸣的时候,开心的都要冒泡了。
尤其是“人工智能”这个词,在甚嚣尘上的舆论聚光灯下,已经被蒙上了一种虚妄的光晕。我回老家的时候,被问道“你会修电脑吗?”和“我会人工智能,你会吗?”的次数是一样多的。最尴尬的是,我明知道我学的东西或许并不比一个简单的神经网络浅薄,但是还是会因为自己不懂人工智能而自卑,因“外行人抢夺话语权”而闷闷不乐。转而我又会想到自己不够自信,不够有涵养,不够包容,进而跟自己更加生气。
虽然这次严格意义上讲,也并不是纯粹的手搓,老师是给了示例代码的。我的工作不过是修改一些地方,就可以满足实验的要求了。不过通过梳理代码,看到线代知识,高数知识,编程知识,数学建模知识交织在一起,也是一件很有意思的事情。这种乐趣,我觉得比上面那种“战胜自卑”的乐趣更加纯粹。
因为我没有上过走软,所以这是我第一次接触 Web 应用开发,在感觉十分新奇有趣的同时,却在编程(其实大部分时候是提需求的产品经理)总感觉自己是浮在云端的。
当我写 C 的时候我是不会这样的,我知道我写的是一门高级语言,这门语言会通过编译器编译成二进制可执行文件,二进制文件会在流水线处理器上执行,处理器会根据指令进行计算和访存,最终通过写显示器的端口输出信息,在我写 Java 的时候,我知道 Java 会先编译成 .class
字节码,然后利用 JDK 环境在 JVM 上解释执行,解释器会调用各种库,最终完成效果。
但是当我在写 html, css, javasript
的时候,我是完全没有概念的,我知道最后成果可以在浏览器上显示,但是为啥?浏览器在我的理解里,就是一个和互联网沟通的应用程序,我点开它,然后互联网就冲我挥手了,感觉似乎没有浏览器,互联网它老人家也找得到我。当我去了解后端的时候,我知道了服务器,我之前理解的服务器,就是那种深埋地下,占地和鸟巢差不多大的东西,每天都要靠全太平洋的水去降温,从事的是计算世界末日啥时候发生的重要事件,关于 URL,我以为就是一个按钮,我点一下他,互联网就来了,贼灵。
这个其实一个计算机领域很常见的现象,“封装和抽象”,人们并不需要了解每个技术的具体实现细节,只需要享受这个技术暴露在外的接口构造的抽象即可。所以将互联网理解成一个宝库一样的东西,浏览器理解成一个探寻宝库的手电,甚至将其与电视做类比,并不是一件很奇怪的事情,谁也不是先学计组,后学 C 语言的,有一个虚假的抽象不丢人。不过这层抽象和以往的抽象不同的是,这层抽象需要被几乎所有人接受,而不是像 C 一样,只需要被一部分程序员接受即可。所以“互联网-浏览器”这层抽象才那么的厚重,那么的虚幻,因为他必须简单到被所有可以上网的人理解。