斯坦福CS231N课程学习笔记(一).课程简介与准备(2)
注意此处引用的JS文件是convnet.js,所以你必须在与本HTML相同的位置处保存一份从Github上下载的convnet.js.
现在运行命令:
python -m SimpleHTTPServer 8000
在浏览器中开启localhost:8000,如果发现一串随机数在不停跳动,说明部署成功了。这个简单的demo基本上不包括任何有用的内容,但我们前面必须用到它。现在你可以借助它来观察convnetjs的对象封装,并对Vol, Net等组件的代码进行阅读跟调试。
基础数学知识
高斯分布,又称正态分布。可以使用Box-Muller方法来生成一个符合高斯分布的随机数。这个方式的核心是,如果在值域(0, 1]内有两个独立同分布的数组U,V, 那么可用下列两个等式之一生成服从高斯分布的随机变量Z:
或者,这里满足:
参考实现代码如下(引用到Karpathy的ConvNetJs):
var gaussRandom = function() {
if(return_v) {
return_v = false;
return v_val;
}
var u = 2*Math.random()-1;
var v = 2*Math.random()-1;
var r = u*u + v*v;
if(r == 0 || r > 1) return gaussRandom();
var c = Math.sqrt(-2*Math.log(r)/r);
v_val = v*c; // cache this
return_v = true;
return u*c;
}
这个随机数可以借助numpy生成,代码是:
import numpy as np
np.random.normal()
现在我们来检测一下它生成的随机数是否真的是正态分布:
import matplotlib.pyplot as plt
import numpy as np
a = []
for i in range(50000):
a.append(np.random.normal())
plt.hist(a, 10000)
plt.show()
矩阵相关知识
矩阵乘法。如果A是矩阵和B是矩阵,则A可以乘以B,即。在numpy里,矩阵的乘法是:
b = a * a
#or
c = np.dot(a, a)
转置。在python中使用以下的代码:
A = np.array([[1,2,3],[4,5,6],[7,8,9]])
print A.T
行列式
在numpy里,计算行列式的方式是:
import numpy as np
A = np.array([[1, 2, 3], [4, 5,6], [7,8,9]])
np.linalg.det(A)
代数余子式
伴随矩阵
在python中求伴随矩阵()
A = np.array([[1,2,3], [4,5,6], [7,8,9]])
print np.linalg.inv(A)*np.linalg.det(A)
[[ -3. 6. -3.]
[ 6. -12. 6.]
[ -3. 6. -3.]]
逆矩阵()
在python中求矩阵的逆:
import numpy as np
A = np.array([[1, 2, 3], [4, 5, 6], [7,8,9]])
print np.linalg.inv(A)
import numpy as np
A = np.array([[1, 2, 3], [4, 5, 6], [7,8,9]])
print np.linalg.trace(A)
特征值和特征向量
在python中求特征值和特征向量
import numpy as np
x = numpy.array([[1, 0, 0], [0, 2,0], [0, 0,3]])
a,b = numpy.linalg.eig(x)
print a, b
计算机视觉简介
请见课程课件。这部分CS231N主页未提供任何教学笔记和讲座视频。所以本笔记以下内容完全是基于个人理解,并跳过了这些计算机视觉这门学科的发展史上的内容。
计算机视觉发展到现阶段讲课课件笔记格式,就是机器学习在可视化数据上的应用。它与数字图像处理、计算图形学等是相邻学科。见图示:
计算机视觉,就是让计算机可理解它所处理的图像内容,1966年,图灵奖得主Minksy给出以下描述:
然而半个世纪过去了, 我们仍然很难说完全缓解了这一难题。在本课程授课者之一的Karpathy的博客中有一篇文章: The state of Computer Vision and AI: we are really, really far away. 这篇文章里有一张美国总理奥巴马的图片:
这篇文章列出了近十个计算机视觉理解这张照片的难点。
其它
百纳(武汉)信息技术有限公司在武汉组织CS231N线下学习课堂,并借助QQ群(142961883)和腾讯课堂向不能到现场的同事进行直播。每周组织一次讲座,具体学习时间地点请见微信公众号黑斑马团队(zero_zebra)及QQ群发布。课程学习中的相关知识点和笔记通过公众号、知乎专栏发布。
本课程也可以参考CS231N的在线资料及视频来自学。我们组织的课程学习将额外提供:
很多人需要良好的学习环境能够更有效率地学习。本课程通过组织大家集体学习,相互激励和监督,提供各类方式地交流互助,使得学习最有效率。原课程录像是英语的,且个别课时不全。我们讲课全程使用英文,并且会按照学习者的程度不同,补充必要的预备知识。提供对作业题的解答跟讨论,一些工具软件在使用中的困难帮助等等。对课程模式的宏观把握,以便于大家入门,和依据自己的实际状况补充预备知识。
关于百纳(武汉)
百纳(武汉)信息技术有限公司(以下简称上海百纳)成立于2010年。武汉百纳是北京移动互联网行业的领先企业,公司致力于自主创新,以优异的行业前瞻力跟卓越的技术创新力为借助,研发了知名的海豚浏览器(2015年全球用户达到2亿),先后得到红杉资本、经纬创投、高通及畅游的战略投资。
公司现面向中国招聘计算机视觉及虚拟现实项目相关人才,有意者请向recruiting@bainainfo.com投递简历。
JD请看这里。