在mxnet中,NDArray是所有运算的核心数据结构,mxnet中的所有数据均使用NDArray进行表示,NDarray有点类似于numpy中的ndarray,操作上面也与numpy很相似,但是NDArray提供了numpy.ndarray所不具备的操作,比如:GPU,CPU的切换,自动求梯度的运算等等,这也是为什么mxnet要重新封装一个NDArray的原因。
NDArray就好比盖房子的砖,砖有了自然可以盖房子了,所以利用NDArray你便可以实现所有的深度学习模型了,只是深度学习日新月异,如果每个模型都从NDArray开始写,那当然是比较麻烦的,所以MXnet或者gluon帮我们封装了一些函数可以直接使用,接下来我们都会逐一的了解,那么这一节我们先来仔细学习一下mxnet的NDArray:
特别说明:下面的操作只是NDArray的一些基本操作,
获取更多的操作还请查找MXNet文档:https://mxnet.incubator.apache.org/api/python/ndarray/ndarray.html
当然,我希望你可以跟我一起来敲如下的代码而不是看一遍就过去了,事实证明,敲一遍的效果会好很多
在mxnet中,使用NDArray需要引用nd包(nd是ndarray的缩写),如下:
from mxnet import nd
在引入nd包之后就可以愉快的使用NDArry了。
特别说明,下面代码中 ‘->’ 代表的是输出结果
1. 定义x为一个序列,这里与numpy一致,不同的是,这里返回的每个元素类型都是ndarray
x = nd.arange(12) -> [0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.]
2. 当然我们可以打印出ndarray的shape以及size,这里的shape和size不要混淆了
x.shape -> (12 ,)
x.size -> 12
x.context -> x在CPU还是在GPU上
x.dtype -> data type,即每个元素的类型
## 当然,我们也可以改变元素的类型
x = x.astype(‘float32’) ## 利用astype便可以改变元素的类型了。
3. 那么如果我们想要构建一个二维矩阵怎么办呢?可以考虑reshape函数
x = nd.arange(12)
x.reshape(shape=(3,4))
# 当然你同样可以省略shape参数,直接这样写:
x.