python grad_在Python中实现Adagrad

本文通过Python的Autograd库实现Adagrad优化算法,用于矩阵分解问题。作者介绍了Adagrad的主要思想,并提供了详细的代码实现过程,包括计算成本函数、梯度以及自适应学习率的更新。在迭代过程中,观察到算法似乎能够收敛并得到解决方案,但作者对实现的正确性存疑。
摘要由CSDN通过智能技术生成

我试图用Python实现Adagrad。为了便于学习,我以矩阵分解为例。我会用Autograd来计算梯度。在

我的主要问题是执行是否良好。在

问题描述

给定一个矩阵a(mxn)有一些缺失项,分解成W和H,分别有大小(mxk)和(kxn)。目标是使用Adagrad学习W和H。对于Autograd实现,我将遵循this guide。在

NB:我非常清楚基于ALS的实现非常适合。我使用Adagrad只是为了学习目的

习惯进口import autograd.numpy as np

import pandas as pd

创建要分解的矩阵

^{pr2}$

屏蔽一个条目A[0, 0] = np.NAN

定义成本函数def cost(W, H):

pred = np.dot(W, H)

mask = ~np.isnan(A)

return np.sqrt(((pred - A)[mask].flatten() ** 2).mean(axis=None))

分解参数rank = 2

learning_rate=0.01

n_steps = 10000

成本梯度与参数W和Hfrom autograd import grad, multigrad

grad_cost= multigrad(cost, argnums=[0,1])

Adagrad主程序(需要检查)shape = A.shape

# Initialising W and H

H = np.abs(np.random.randn(rank, shape[1]))

W = np.abs(np.random.randn(s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值