python4-mxnet笔记
ndarray(矩阵计算)
from mxnet import ndarray as nd
nd.zeros((3, 4)) #初始化为0的3行4列2D数组
nd.ones((3, 4)) #初始化为1的3行4列2D数组
nd.array([[1,2],[2,3]]) #直接构造
nd.random_normal(0, 1, shape=(3, 4))
#元素值服从0到1的正态分布
数组.shape获取形状
数组.size数组大小
nd.dot(x, y.T) #转置,矩阵相乘
nd.exp(y) #指数运算
nd.arange(3).reshape((3,1)) #3行1列二维数组从0到2
ndarray可以很方便地同numpy进行转换
import numpy as np
x = np.ones((2,3))
y = nd.array(x) # numpy -> mxnet
z = y.asnumpy() # mxnet -> numpy
print([z, y])
功能函数:
id(y):y的ID,可能是关于内存空间的ID
z[:] = x + y #将x+y之和赋给已开好的二维数组z中
z = x + y #将x+y之和赋给新开的二维数组z中(旧的被回收)
nd.elemwise_add(x, y, out=z) #能够同时避免x+y临时空间的开销
x[1:2,1:3] #截取二维数组部分,这种写法也支持批量写入
autograd
with关键字,用来代替try:except:finally
流程控制语句中要注意行的缩进
求导过程:
x = nd.array([[1, 2], [3, 4]])
x.attach_grad() #申请对应空间
with ag.record():
y = x * 2
z = y * x
z.backward()
x.grad #求导