# 数据结构,矩阵 # http://zh.gluon.ai/chapter_prerequisite/ndarray.html from mxnet import ndarray as nd print(nd.zeros((3, 4))) # 创建3x4的0矩阵 x = nd.ones((3, 4)) # 全为1 print(x) y = nd.random_normal(0, 1, shape=(3, 4)) # 创建随机3x4矩阵 print(y) print(y.shape) # 尺寸 print(y.size) # 大小 # 操作符 print(x + y) print(x * y) nd.exp(y) # 指数运算 print(nd.dot(x, y.T)) # 矩阵乘法,y.T表示y的转置,3x4 * 4x3 # 当对两个形状不同的NDArray按元素运算时,可能会触发广播(broadcasting)机制:先适当复制元素使这两个NDArray形状相同后再按元素运算。 a = nd.arange(3).reshape((3, 1)) # 3x1 b = nd.arange(2).reshape((1, 2)) # 1x2 print(a) print(b) print(a + b) # 由于A和B分别是3行1列和1行2列的矩阵,如果要计算A + B,那么A中第一列的3个元素被广播(复制)到了第二列 # ,而B中第一行的2个元素被广播(复制)到了第二行和第三行。如此,就可以对2个3行2列的矩阵按元素相加。 # 和numpy的转换 import numpy as np x = np.ones((2, 3)) y = nd.array(x) z = y.asnumpy() print([z, y])
# 自动求导 import mxnet.ndarray as nd import mxnet.autograd as ag x = nd.array([[1, 2], [3, 4]]) print(x) x.attach_grad() # 申请空间 with ag.record(): # 一定要记录函数 y = x * 2 z = y * x print(z) z.backward() # 在z函数中对x求导 print(x.grad) # y=x*2,z=x*y,z=2*x*x,dz/dx=4*x(y.grad就是在z中对y求导)
标签:,nd,元素,矩阵,3x4,print,import From: https://www.cnblogs.com/o-Sakurajimamai-o/p/17582211.html