首页 > 其他分享 >上手

上手

时间:2023-07-26 13:34:31浏览次数:24  
标签: nd 元素 矩阵 3x4 print import

# 数据结构,矩阵
# 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

相关文章