NDArray Tutorial
来源:互联网 发布:查看linux磁盘读写速率 编辑:程序博客网 时间:2024/06/15 16:37
根据 mxnet documentation-NDArray
NDArray 是 mxnet 用于计算的数据结构. 可类比于 tensorflow 的 tensor,caffe 的 blob.
看到 mxnet 中的 NDArray 使用与 numpy 差别不大, 操作都很简明.
这个网页都是基础操作, 我记录了其中较关键的部分.
创建 NDArray
NDArray 既可直接创建, 也可以从 numpy 的 ndarray 转换得到.
a = mx.nd.array([1,2,3])c = np.arange(15).reshape(3,5)# create a 2-dimensional array from a numpy.ndarray objecta = mx.nd.array(c)
制定数据类型
默认是 float32, 如需改变可通过 dtype 设置.
# float32 is used in defaulta = mx.nd.array([1,2,3])# create an int32 arrayb = mx.nd.array([1,2,3], dtype=np.int32)# create a 16-bit float arrayc = mx.nd.array([1.2, 2.3], dtype=np.float16)
填充函数
# create a 2-dimensional array full of zeros with shape (2,3)a = mx.nd.zeros((2,3))# create a same shape array full of onesb = mx.nd.ones((2,3))# 全是7c = mx.nd.full((2,3), 7)# 随机值d = mx.nd.empty((2,3))
打印
使用asnumpy
来打印 NDArray
b = mx.nd.arange(18).reshape((3,2,3))b.asnumpy()
基本操作
与 numpy 一样, * 代表矩阵对应元素相乘 (点乘),dot
表示矩阵相乘.
a = mx.nd.arange(4).reshape((2,2))b = a * ac = mx.nd.dot(a,a)
切片
切片操作默认在 axis=0, 即行上. 也可通过slice_axis
来确定在哪个维度切片.
#按行切, 设置序号为1的行内数据为1a = mx.nd.array(np.arange(6).reshape(3,2))a[1:2] = 1a[:].asnumpy()#按列切, 取出序号为1的列(从0开始d = mx.nd.slice_axis(a, axis=1, begin=1, end=2)d.asnumpy()
形状
除了 axis=1 上可以不同, 被concat
的矩阵其他维度都要相同.
如 a.shape:(1L,2L,3L,4L),b.shape:(1L,10L,3L,4L)
那么 c = mx.nd.concat(a,b)
c.shape:(1L, 12L, 3L, 4L)
降维
使用sum
或mean
, 从特定的维度sum_axis
a = mx.nd.ones((2,3))b = mx.nd.sum(a)c = mx.nd.sum_axis(a, axis=1)
广播
使用broadcast_to
方法.
在使用 + 或 *, 两个矩阵维度不同的时候, 会自动广播.
a = mx.nd.array(np.arange(6).reshape(6,1))b = a.broadcast_to((6,4))#多维度广播c = a.reshape((2,1,1,3))d = c.broadcast_to((2,2,2,3))#自动广播a = mx.nd.ones((3,2))b = mx.nd.ones((1,2))c = a + b
复制
a = mx.nd.ones((2,2))b = ab is a # will be Trueb = a.copy()b is a # will be False
GPU 支持
NDArray 设备信息存放在 ndarray.context 中.
gpu_device=mx.gpu() # Change this to mx.cpu() in absence of GPUs.def f(): a = mx.nd.ones((100,100)) b = mx.nd.ones((100,100)) c = a + b print(c)# in default mx.cpu() is usedf()# change the default context to the first GPUwith mx.Context(gpu_device): f()
mxnet 计算的所需的数据结构需存在相同的设备中. 可使用copyto
方法, 将 cpu 数据转存到 gpu 中.
文件读写
推荐使用save
和load
方法. 因为其支持多语言, 兼容分布式.
d = {'a':a, 'b':b}mx.nd.save("temp.ndarray", d)c = mx.nd.load("temp.ndarray")
阅读全文
0 0
- NDArray Tutorial
- numpy.ndarray
- ndarray对象
- ndarray对象
- ndarray.reshape
- 矩阵,ndarray
- numpy -- ndarray
- ndarray.Numpy
- ndarray数据类型
- tutorial
- Tutorial
- Tutorial
- numpy中的ndarray对象
- NumPy与ndarray简介
- numpy.ndarray.flatten
- numpy.ndarray.flatten
- mxnet深度学习(NDArray)
- Numpy的ndarray简介
- 大数模板
- NSRunLoop探究
- bzoj3159 -- LCT
- spring中配置定时任务
- 雷达图?蜘蛛图?又一个数据图表可以拿来使了!
- NDArray Tutorial
- 树欲静而风不止
- MongoDB学习笔记
- java中synchronized关键字的用法
- Spring学习(六):各种注解解释——长期更新
- python os.path模块
- 获取java项目根目录
- .Net 内存溢出(System.OutOfMemoryException
- Sublime Text全黑主题+自定义修改Sublime Text的标签栏背景色 tint_modifier