[转] Theano 0.6 文档[1] - NumPy 复习

本文为Lancelod_Liu编译, 转载请保留此行

This Article is translated and edited by Lancelod_Liu, keep this line if you share it.

原文: .

NumPy 复习

用于机器学习的矩阵形式

行水平列垂直. 每行数据是一个样本(这和MATLAB中某些情况相反). 因此inputs[10, 5]代表有10个样本, 每个样本长度为5. 如果这是一个神经网络的输入, 则输入到第一个隐层的权值应该是一个(5, #hid)的矩阵. #hid为隐层神经元个数.

考虑下面的数列:

>>> 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)

这是一个 3x2 矩阵, 有3行2列.

使用下面语句来获取第3行第1列的数据(从1数起):

>>> numpy.asarray([[1., 2], [3, 4], [5, 6]])[2, 0]
5.0

永远从左至右从上至下进行读取. 相邻的[1,2]和[3,4]是两行.

传播Broadcasting

Numpy在算术操作中使用数组的传播操作. 它的意思是小的数组(标量)会被变换成大的数组, 从而使得它们的形状(shape)匹配. 

下面是一个传播的例子:

>>> a = numpy.asarray([1.0, 2.0, 3.0])
>>> b = 2.0
>>> a * b
array([2., 4., 6.])

小一些的数组b(此处实际是一个标量, 可以看做0-d的数组)在乘法过程中被传播到和a相同的大小. 这个trick在解释表达式时非常有用. 更详细的内容见: numpy user guide.

 

posted on 2014-11-29 20:17  hanahimi  阅读(193)  评论(0)    收藏  举报

导航