美文网首页
MXNet学习—预备

MXNet学习—预备

作者: 风就吹吧 | 来源:发表于2018-09-18 18:50 被阅读0次

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/ 官网直接搜索

相关文章

网友评论

      本文标题:MXNet学习—预备

      本文链接:https://www.haomeiwen.com/subject/wtgogftx.html