http://zh.gluon.ai/chapter_prerequisite/index.html#
一.数据操作
NDArray
在 MXNet 中,NDArray 是存储和变换数据的主要工具
NDArray 和 NumPy 的多维数组非常类似。然而,NDArray 提供 GPU 计算和自动求梯度等更多功能,这些使得 NDArray 更加适合深度学习
1. 导入
from mxnet import nd
2. 创建一个行向量
x=nd.arange(12) 可以通过x.shape知道维度信息,x.size知道元素个数
x=x.reshape((3,4)) 可以将行向量转变成一个3*4的矩阵x.reshape((3, 4))也可写成x.reshape((-1, 4))x.reshape((3, -1))。由于x的元素个数是已知的,这里的-1是能够通过元素个数和其他维度的大小推断出来的。
3. 创建一个各元素为 0,形状为(2,3,4)的张量 nd.zeros((2,3,4))
创建各元素为 1 的张量 nd.ones((3, 4))
4. 通过 Python 的列表(list)指定需要创建的 NDArray 中每个元素的值。 y=nd.array([[2,1,4,3],[1,2,3,4],[4,3,2,1]])
5. 创建一个形状为(3,4)的 NDArray。它的每个元素都随机采样于均值为 0 标准差为 1 的正态分布。
nd.random.normal(0,1,shape=(3,4))
运算
x+y, x*y, x/y, x.exp(), nd.dot(x,y.T)(矩阵乘法), nd.concat(x,y,dim=0),nd.concat(x,y,dim=1)(矩阵合并), x == y(判断相应位置元素是否相等,相等为1,否为0),x.sum()(对 NDArray 中的所有元素求和得到只有一个元素的 NDArray) , x.norm().asscalar()(将结果变换为 Python 中的标量)
广播机制
当对两个形状不同的 NDArray 按元素操作时,可能会触发广播(broadcasting)机制:先适当复制元素使得这两个 NDArray 形状相同后再按元素操作。
索引
类似于python的list索引,左开右闭原则
NDArray与NumPy相互转换
二.自动求梯度
MXNet 提供autograd包来自动化求导过程。MXNet 的autograd包可以对一般的命令式程序进行求导。
在求变量的梯度时,为了减少计算和内存开销,默认条件下 MXNet 不会记录用于求梯度的计算。我们需要调用record函数来要求 MXNet 记录与求梯度有关的计算。
接下来我们可以通过调用backward函数自动求梯度。需要注意的是,如果y不是一个标量,MXNet 将默认先对y中元素求和得到新的变量,再求该变量有关x的梯度。
MXNet 的运行模式包括训练模式和预测模式。我们可以通过autograd.is_training()来判断运行模式。
三.查阅文档
1)查阅某个某个模块的所有函数和类
print(dir(nd.random))
2)查找特定的函数和类的使用
help(nd.ones_like)
3)http://mxnet.apache.org/ 官网直接搜索
网友评论