深度学习中向量化的意义

前言

向量化就是要去除代码中for循环,这就需要用到矩阵,Python是可以直接进行矩阵计算的,C语言就不行,我以前在使用MATLAB时候就觉得MATLAB非常强大,就是因为其矩阵计算能力,而且MATLAB名字就叫矩阵实验室。但可惜MATLAB是收费软件,在接触到python以后发现,Python在实现方法上有很多与MATLAB相似的地方,比如在矩阵计算这方面,而且还是免费开源的。我觉得矩阵计算能力和开源是Python能被深度学习研究者逐渐到完全接受最根本的原因。

对比

for循环计算和矩阵计算有什么区别,一个是串行计算,一个是并行计算。CPU和GPU都有并行化的能力,如果用for循环,相当于放弃使用这种功能。而GPU和CPU并行化计算的能力不一样。GPU为什么强,我没有查阅资料,但是我的理解是GPU开始是做图形处理器的,需要做大量类似的运算。而CPU需要做各种复杂运算。而矩阵运算就是大量的的类似运算,这个应该就是GPU比CPU快的原因。

例子

import numpy as np
a = np.array([1,2,3,4])
print(a)

import time
a = np.random.rand(1000000)
b = np.random.rand(1000000)
tic = time.time()
c = np.dot(a,b)
toc = time.time()
print("Vectorized version:" + str(1000*(toc-tic)) + "ms")

c = 0
tic = time.time()
for i in range(1000000):
    c += a[i]*b[i]
toc = time.time()
print("Vectorized version:" + str(1000*(toc-tic)) + "ms")

结果是

Vectorized version:6.000041961669922ms
For loop:386.0001564025879ms
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值