判断元素是否在ndarray_MXNet 之NDArray 速查

31777e6b6fdd1be8137ddea4261cfe56.png

MXNet 中的库 NDArray 类似于 NumPy,区别在于 NDArray 可以利用 GPU 进行加速以及自动求梯度

创建 NDArray

from mxnet import nd# 创建向量x = nd.arange(12)# 获得 x 的形状x.shape# 获得 x 中的元素数x.size# 将 x 改为 3x4 的矩阵X = x.reshape((3,4)) # x.reshape((-1,4)) or x.reshape((3,-1))# 各元素都为0,形状为 2,3,4 的张量x = nd.zeros((2,3,4))# 各元素为 1 的张量nd.ones((2,3,4))# 使用 list 初始化nd.array([[1,2,3],[4,5,6]])# 产生均值为0,标准差为1的正态分布nd.random.normal(0,1,shape=(3,4))复制代码

运算

按元素运算

# 按元素乘法x * y# 按元素除法x / y# 按元素加法x + y# 按元素做指数运算x.exp()复制代码

矩阵乘法

# 假设X、Y矩阵均为3行4列,则矩阵X与Y的转置相乘的结果为3行3列nd.dot(X, Y.T)复制代码

矩阵连接

# 假设x和y都是3x4的矩阵,nd.concat将x和y连起来,dim=0表示扩展行nd.concat(x, y, dim=0)# dim=1表示扩展列nd.concat(x, y, dim=1)复制代码

两个同形状的张量,可以按相同位置进行比较、判断是否相等,相等位1,否则为0,返回新的张量

x == y复制代码

对所有元素求和,返回值依然是一个 NDArray

x.sum()复制代码

可以将上式返回的 NDarray 转换为一个标量

x.sum().asscalar()复制代码

求标量中所有元素的L2范数(平方和再开更号)

x.norm()复制代码

广播机制

不同形状张量按元素运算,先复制元素使它们形状相同,再进行计算

x = nd.arange(3).reshape((3,1))y = nd.arange(2).reshape((1,2))x + y复制代码

索引

行或列的索引都从0开始,遵从左闭右开原则

# 获得某个元素,并重新赋值,第2行,第3列X[1,2] = 9# 获取第2、3行的所有元素X[1:3]# 截取一部分元素(第2、3行的所有元素),并重新赋值X[1:3,:] = 12复制代码

NDArray 和 NumPy 互换

通过 array 将 NumPy 对象转换为 NDArray 对象

import numpy as npP = np.ones((2,3))D = nd.array(P)D复制代码

将 NDArray 转换为 NumPy

D.asnumpy()复制代码

自动求梯度

梯度的概念

x 为一个向量

da5efbf9d2ee95a85f873cb8f2aa05b0.png

,关于 x 的函数 f(x) 的梯度可以表示为

8328e4c10e927a322405949ebb7cb595.png

使用 MXNet 自动求梯度的步骤:

  1. 导入 autograd 库:from mxnet import autograd, nd
  2. 标记需要求梯度的参数 x.attach_grad(),其中 x 为参数,它是一个向量
  3. autograd.record(),记录求梯度的计算,默认情况下 MXNet 不会记录(可选)
  4. 通过 backward 函数自动求梯度

例如我们对

37e82aefaadbc99da851908e8e38005a.png

自动求梯度的代码如下

from mxnet import autograd, ndx = nd.arange(4).reshape((4,1))x.attach_grad()with autograd.record(): y = 2 * nd.dot(x.T, x)y.backward()x.grad----output:[[ 0.] [ 4.] [ 8.] [12.]]复制代码

本文来自《动手学深度学习》预备知识的读书笔记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值