美文网首页
mxnet:自动求梯度

mxnet:自动求梯度

作者: AI秘籍 | 来源:发表于2020-05-07 07:18 被阅读0次

mxnet求梯度方法

step1.先调用attach_grad函数来申请存储梯度所需要的内存.
x.attach_grad()

step2.定义x的函数y,调用record函数来记录与求梯度有关的计算.
with autograd.record():
y=2 * nd.dot(x.T,x)

step3.调用反向函数backward计算梯度
y.backward()

step4.获取样本的梯度
如果有多个样本,则是一个batch_size样本的梯度和
print(x.grad)

'''自动求梯度'''
from mxnet import nd, autograd

x = nd.arange(4).reshape((4,1))
print(x)

# step1.调用attach_grad来申请存储梯度所需要变量的内存
x.attach_grad()

# step2.定义x的函数y
# 调用record记录梯度有关的计算
with autograd.record():
  y=2 * nd.dot(x.T,x)

# step3.调用反向函数backward计算梯度
y.backward()

# step4.获取样本的梯度
# 如果有多个样本,则是一个batch_size样本的梯度和
print(x.grad)

# 小批量随机梯度下降算法sgd
# 不断迭代模型参数来优化损失函数
# param.grad为自动求梯度计算来的梯度,是一个批量样本的梯度和
# params为模型参数w,b
def sgd(params,lr,batch_size):
  for param in params:
    param[:] = param - lr*param.grad/batch_size

print(nd.zeros((2,3,4)))
image.png

epoch迭代周期,一个迭代周期,遍历一遍所有样本.
num_epochs迭代周期数,遍历num遍所有样本.

参考:

动手学深度学习,线性回归部分.

相关文章

网友评论

      本文标题:mxnet:自动求梯度

      本文链接:https://www.haomeiwen.com/subject/exmgghtx.html