计算机的错误计算(四十八)

摘要  分析一个深度学习中的基于GPU的“Hello World”程序的计算精度问题。该程序使用了PyTorch库来创建一个权重矩阵W和一个特征矩阵X,并通过矩阵乘法计算得到结果矩阵Y。通过与计算机的错误计算(四十一)中给出的结果进行比较,我们发现,在GPU上执行计算时产生的误差大于在CPU上执行时的计算误差。

       首先展示环境:Windows 10,Python 3.8.19,

然后是代码:

接下来是输出结果:

       现在我们讨论 Y[1,1]、Y[1,4]、Y[2,4]、Y[3,3] 4个结果的精度。

       从上面最后一张图片知,Python 8位有效数字的 4个输出结果为

Y[1,1]=-\textcolor{blue}{9.6725}\textcolor{red}{464}\,,\\ Y[1,4]=-\textcolor{blue}{6.1047}\textcolor{red}{821}\,, \\ Y[2,4]=\textcolor{blue}{6.88700}\textcolor{red}{49}\,,\\ Y[3,3]=\textcolor{blue}{-10.6322}\textcolor{red}{50}\,.

然后,从计算机的错误计算(四十一)知,它们的正确值是

Y[1,1]=-\textcolor{blue}{9.6725}\textcolor{red}{597}\,,\\ Y[1,4]=-\textcolor{blue}{6.1047}\textcolor{red}{764}\,, \\ Y[2,4]=\textcolor{blue}{6.88700}\textcolor{red}{79}\,,

Y[3,3]=\sum\limits_{i=0}^{i=2} W[3,i]\times X[i,3]\\=-4.033435344696045\times(-8.919953346252441)\\-5.966353416442871\times7.748488426208496\\+1.820364952087402\times(-0.208794742822647)\\=-0.106322479261772e2\\\approx \textcolor{blue}{-10.6322}\textcolor{red}{48}\,.

这样,它们分别有 3位、3位、2位、2位错误数字。前面两个的错误位数的相对误差均为 3/8=37.5%,  后面两个的错误位数的相对误差均为 2/8=25%.  不小于25%误差率的占比不少于 4/(5*5)=16%. 

       最后总结一句,与(四十一)中的 CPU下的误差相比,GPU下的误差要大一点。但是,不能小瞧这“一点”!1次矩阵相乘就错了 3位数,总共才 8位数啊。还记得(四十五)中案例么?1次迭代仅多了 1位错误数字。但是,14次以后,没有正确数字了。

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值