MXNet中NDArray的一些基础操作

1 NDArray基本用法

from mxnet import nd
#创建行向量
x=nd.arange(10)
print(x)
#获取形状
print(x.shape)
#获取元素总数
print(x.size)
#改变形状
y=x.reshape((2,5))
print(y)
#元素全0或1
a0=nd.zeros((2,3,4))
a1=nd.ones((2,3))
#列表方式创建
a2=nd.array([[2,1,4,3],[1,2,3,4],[4,3,2,1]])
#随机生成,正态分布
a3=nd.random.normal(0,1,shape=(3,4))
print(a0,a1,a2,a3)

MXNet中NDArray的一些基础操作_第1张图片

2 NDArray运算

from mxnet import nd
X=nd.arange(12).reshape((3,4))
Y=nd.array([[2,1,4,3],[1,2,3,4],[4,3,2,1]])
print("X:",X)
print("Y:",Y)
print("X+Y:",X+Y)
print("X*Y:",X*Y)
print("X/Y:",X/Y)
print("指数:",X.exp())
print("矩阵乘法:",nd.dot(X,Y.T))
print("(行)连结:",nd.concat(X,Y,dim=0))
print("(列)连结:",nd.concat(X,Y,dim=1))
print("条件判别式:",X==Y)
print("元素求和:",X.sum())
print("元素求和的标量结果:",X.sum().asscalar())

MXNet中NDArray的一些基础操作_第2张图片
MXNet中NDArray的一些基础操作_第3张图片

3 广播机制

from mxnet import nd
X=nd.arange(3).reshape((3,1))
Y=nd.arange(2).reshape((1,2))
print(X)
print(Y)
print(X+Y)

MXNet中NDArray的一些基础操作_第4张图片

4 索引

from mxnet import nd
X=nd.arange(12).reshape((3,4))
print(X)
print(X[1:3])
X[1,2]=9
print(X)
X[1:2,:]=12
print(X)

MXNet中NDArray的一些基础操作_第5张图片

5 运算内存开销

from mxnet import nd
X=nd.arange(12).reshape((3,4))
Y=X.ones_like()
before=id(X)
X=X+Y
print(id(X)==before)

X1=nd.arange(12).reshape((3,4))
Y1=X1.ones_like()
before=id(X1)
X1+=Y1
print(id(X1)==before)

Z=X.ones_like()
z_before=id(Z)
Z[:]=X+Y
print(id(Z)==z_before)
#避免临时内存开销
nd.elemwise_add(X,Y,out=Z)
print(id(Z)==z_before)

在这里插入图片描述

6 NDArray与Numpy的转换

import numpy as np
from mxnet import nd
p=np.ones((2,3))
print(p)
d=nd.array(p)
print(d)
print(d.asnumpy())

MXNet中NDArray的一些基础操作_第6张图片

你可能感兴趣的:(深度学习)