GPU神经网络和JAVA神经网络速度对比

分别用CUDA和JAVA制作两个三层的n*m*k的神经网络,使输入一致,目标函数一致,迭代次数一致,通过调节节点数量测量时间比较这两个网络到底哪个快。

网络的输入节点的初始化方式为

for(inta=0 ;a<n ;a++)

           {

              x[a]=(double)a/(n);

           }

目标函数y[0]=1;y[1]=0;

权重都初始化为0.1,用随机梯度下降,不用偏置

迭代次数都是100次。

得到表格


节点数量网络结构迭代次数java用时y[0]y[1]CUDA用时y[0]y[1]java用时/CUDA用时java速度/CUDA速度
6003*100*2100470.99999999607298082.048728729816881E-211 6570.9999999960729809  00.07153729113.9787234
30003*500*2100620.999999999950567106410.999999999950567100.09672386910.33870968
20000100*100*2100620.9999917229035667 07510.999991722903566800.08255659112.11290323
4000001000*200*21002960.9999999979392669015320.999999997939266900.1932114885.175675676
24000004000*300*210025320.9999999999999065069580.999999999999906500.3638976722.748025276
  
240000004000*3000*2100563051074692100.7538290581.326560696
240000004000*3000*2100564151074317100.7591129891.317326952
  
400000005000*4000*21009764610128027100.7626984931.311134097
400000005000*4000*21009753110127416100.7654533181.306415396
400000005000*4000*21009613910127592100.7534876791.327161714



比如第一组网络结构3*100*2共600个节点,迭代次数100次,java用时47ms,cuda用时657ms,

java第100次y[0]= 0.9999999960729808 ;y[1]=0

Cuda第100次y[0]= 0.9999999960729809 ;y[1]=0

最后一位小数不一致时因为四舍五入规则造成的。

当节点数量超过240万以后经过100次迭代输出已经都是1和0,已经没有区分度只是用来测量速度。

从表格看出来当节点数量只有600个时候java的速度甚至是cuda的13.9倍,很意外的是即便节点数量有4000万个java的速度依然是cuda 的1.32倍。




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑榆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值