深度学习入门(一)

在MXNet中,NDArray是一个类,也是存储和交换数据的主要工具。NDArray和Numpy的多维数组非常类似,NDArray提供GPU计算和自动求梯度等更多功能。




数据操作

首先,从MXNet中导入ndarray模块。
深度学习入门(一)
使用shape属性获取NDArray实例的形状,也可以通过size属性得到NDArray实例中的元素的总数。

下面使用reshape函数把行向量x的形状改为(3,4),并记住X
深度学习入门(一)

使用zeros()创建零矩阵,使用ones来创建元素都为1的矩阵,除此之外,可以指定各个元素的值。
有时候,我们需要随即生成NDArray中每个元素的值。下面我们创建一个形状(3,4)的NDArray。它的每个元素都随机采样于均值为0,标准差为1的正态分布

深度学习入门(一)

使用sum(),可以对矩阵元素进行求和。




自动求梯度

在深度学习中,我们经常需要对函数求梯度(gradient)。

为了求有关变量x的梯度,我们需要先调用attach_grad函数来申请存储梯度所需要的内存。

x.attach_grad()

下面定义有关变量x的函数。为了减少计算和内存开销,默认条件下MXNet不会记录用于求梯度的计算。调用record函数来要求MXNet记录与求梯度有关的记录。

from mxnet import autograd,nd
x = nd.arange(4).reshape((4,1))	#4行1列
x.attach_grad()					#开辟内存
with autograd.record():
    y = 2*nd.dot(x.T,x)			#y是一个标量
y.backward()					#自动求梯度
assert(x.grad-4*x).norm().asscalar()==0	#求范式,用asscalar转换成标量,判断是否为0
x.grad

结果如下
深度学习入门(一)

未完待续

上一篇:DbSet.Attach(实体)与DbContext.Entry(实体).State = EntityState.Modified 区别


下一篇:Pytest+Allure定制报告