Vectorization
什么是向量化?
向量化是为了让模型的速度更快
左边是非向量化的实现,右边是向量化的实现
图中是使用for循环和向量化处理的时间对比,可以看出向量化后快了将近300倍。
更多向量化的案例:
More Vectorization Examples
绿色笔记使得原来的两个for循环变成了一个,提高了速度。
Vectorizing Logistic Regression
broadcasting in Python:b是一个实数,但是和矩阵相加的时候会自动扩展为一个行向量。
红圈(下面的两个)即实现m个样本的正向传播。
Vectorizing Logistic Regression's Gradient Output
向量化逻辑回归的实现:
将逻辑回归向量化的过程,将两个for循环都去掉了,虽然说尽量去掉for循环有利于代码的执行速度,但是迭代次数的for循环是去不掉的。
下面讲python中的广播(Broadcasting)机制
Broadcasting in Python
例子数据如上
如何实现两行代码求各个数据占卡路里(三个数据之和)的比例?
axis=0表示计算竖直方向(也就是一列)的值,对应axis=1 代表的是水平方向(一行)
A是一个3*4的矩阵,而cal是一个1*4的矩阵,Python中是如何实现他们之间的运算的呢?
可以看到广播机制会使第二个比较小的矩阵和前一个矩阵变成匹配的大小:
接下来介绍了一些在编程中帮助减少bug的技巧:
A note on python/numpy vectors
Python在广播机制灵活的同时有时候会带来一些奇怪的bug
1. 不要使用np.random.rand(5)这样的写法(秩为1的数组)来表示一个行向量,用np.random.rand(5,1)来更清楚地表示
2. 使用断言(assert)来判断矩阵的维度以确保运算正确
3. 使用reshape()来确保矩阵的维度是想要的结果
Explanation of logistic regression cost function (optional)
为什么在逻辑回归里选择C这个损失函数:
需要理解的概念:独立同分布、最大似然估计