NumPy回顾¶
- 这里有一些NumPy的快速指南:
机器学习的矩阵惯例¶
Rows are horizontal and columns are vertical. 每一行都是一个样本。因此,inputs[10,5]是10个样本的矩阵,其中每个样本具有维度5。如果这是神经网络的输入,则从输入到第一个隐藏层的权重将表示大小(5, #hid)的矩阵。
Consider this array:
>>> numpy.asarray([[1., 2], [3, 4], [5, 6]])
array([[ 1., 2.],
[ 3., 4.],
[ 5., 6.]])
>>> numpy.asarray([[1., 2], [3, 4], [5, 6]]).shape
(3, 2)
This is a 3x2 matrix, i.e. there are 3 rows and 2 columns.
要访问第3行(#2行)和第1列(#0列)中的元素:
>>> numpy.asarray([[1., 2], [3, 4], [5, 6]])[2, 0]
5.0
要记住这一点,我们从左到右、从上到下读取,所以连续的元素是一行。That is, there are 3 rows and 2 columns.
Broadcasting¶
Numpy在算术运算期间对不同形状的数组进行broadcasting。这通常意味着较小的数组(或标量)被broadcasted到较大的数组,以让它们具有兼容的形状。下面的示例演示broadcastaing的一个实例:
>>> a = numpy.asarray([1.0, 2.0, 3.0])
>>> b = 2.0
>>> a * b
array([ 2., 4., 6.])
在这种情况下,这里较小的数组b
(实际上是标量,其工作原理类似于一个0维数组)在乘法过程中被broadcasted到与a
相同的大小。This trick is often useful in simplifying how expression are written. 有关broadcasting的更多详情,请参见numpy用户指南。