python grab,python grabcut

  python grab,python grabcut

  我试图用计算机编程语言实现阿达格拉德。为了便于学习,我以矩阵分解为例。我会用亲笔签名来计算梯度。在

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

  问题描述

  给定一个矩阵答(mxn)有一些缺失项,分解成W和h,分别有大小(mxk)和(kxn)。目标是使用阿达格拉德学习W和h。对于亲笔签名实现,我将遵循这本指南。在

  注意:我非常清楚基于进场与着陆模拟器;肌萎缩侧索硬化的实现非常适合。我使用阿达格拉德只是为了学习目的

  习惯进口将亲笔签名. numpy作为铭牌导入

  进口熊猫作为螺纹中径

  创建要分解的矩阵

  ^{pr2}$

  屏蔽一个条目A[0,0]=np .圆盘烤饼

  定义成本函数定义成本(宽,高):

  pred=np.dot(W,H)

  mask=~np.isnan(A)

  返回NP。sqrt((pred-A)[mask].flatten() ** 2).平均值(轴=无))

  分解参数等级=2

  学习率=0.01

  n_steps=10000

  成本梯度与参数W和来自亲笔签名的进口毕业生

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

  阿达格拉德主程序(需要检查形状=形状

  # W和H的首字母

  H=np.abs(np.random.randn(秩,形状[1])

  w=NP。ABS(NP。随机的。randn(shape[0],秩))

  # gt_w和gt_h包含梯度和的累加

  gt_w=np.zeros_like(W)

  gt_h=np.zeros_like(H)

  #稳定系数

  eps=1e-8

  打印迭代,成本

  对于范围内的I(n _ steps):

  如果i00==0:

  打印 **20

  打印我,,,成本(宽,高)

  #计算机毕业生wrt W和H

  del_W,del_H=梯度成本(宽,高)

  #添加渐变正方形

  gt_w=np.square(del_W)

  gt_h=np.square(德尔_h)

  #修改后的学习率

  mod _ learning _ rate _ W=NP。divide(learning _ rate,np.sqrt(gt_w eps))

  mod _ learning _ rate _ H=NP。divide(learning _ rate,np.sqrt(gt_h eps))

  W=W-del_W*mod_learning_rate_W

  H=H-del_H*mod_learning_rate_H

  当问题收敛,我得到了一个合理的解决方案,我想知道实现是否正确。具体来说,对梯度和的理解,然后计算自适应学习率是否正确?在

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: