深度学习笔记(一)

本文介绍MXNet中的NDArray类,包括创建、操作NDArray以及使用NDArray进行自动求梯度的方法。NDArray类似于Numpy的多维数组,但提供了GPU计算和自动求梯度等功能。文章演示了如何创建不同类型的NDArray,执行矩阵操作,并通过实例展示了自动求梯度的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在MXNet中,NDArray是一个类,也是存储和交换数据的主要工具。NDArray和Numpy的多维数组非常类似,NDArray提供GPU计算和自动求梯度等更多功能。




数据操作

首先,从MXNet中导入ndarray模块。
在这里插入图片描述
使用shape属性获取NDArray实例的形状,也可以通过size属性得到NDArray实例中的元素的总数。



下面使用reshape函数把行向量x的形状改为(3,4),并记住X
在这里插入图片描述



使用zeros()创建零矩阵,使用ones来创建元素都为1的矩阵,除此之外,可以指定各个元素的值。
有时候,我们需要随即生成NDArray中每个元素的值。下面我们创建一个形状(3,4)的NDArray。它的每个元素都随机采样于均值为0,标准差为1的正态分布

在这里插入图片描述

使用sum(),可以对矩阵元素进行求和。




自动求梯度

在深度学习中,我们经常需要对函数求梯度(gradient)。

为了求有关变量x的梯度,我们需要先调用attach_grad函数来申请存储梯度所需要的内存

x.attach_grad()

下面定义有关变量x的函数。为了减少计算和内存开销,默认条件下MXNet不会记录用于求梯度的计算。
调用record函数来要求MXNet记录与求梯度有关的记录。
对函数y = 2xTx求关于列向量x的梯度

from mxnet import autograd,nd
x = nd.arange(4).reshape((4,1))	#4行1列
x.attach_grad()					#开辟内存
with autograd.record():
    y = 2*nd.dot(x.T,x)			#y是一个标量
y.backward()					#自动求梯度
assert(x.grad-4*x).norm().asscalar()==0	#求范式,用asscalar转换成标量,判断是否为0
x.grad

关于y = 2xTx 求梯度,为y = 4x,结果如下

在这里插入图片描述




总结

本文,介绍了mxnet的基本使用,比如创建零矩阵,单位矩阵,一些矩阵的基础加法,乘法,由于基础,这里没有列出,最后学习了一些自动求梯度的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值