欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > 【深度学习】向量化

【深度学习】向量化

2024/10/26 0:22:42 来源:https://blog.csdn.net/weixin_62403234/article/details/141905180  浏览:    关键词:【深度学习】向量化

1. 什么是向量化

        向量化通常是消除代码中显示for循环语句的技巧,在深度学习实际应用中,可能会遇到大量的训练数据,因为深度学习算法往往在这种情况下表现更好,所以代码的运行速度非常重要,否则如果它运行在一个大的数据集上面,代码可能花费很长时间去运行。

        什么是向量化?在logistic回归中,需要计算z=w^{T}x+b,w、x均为列向量。如果为非向量化实现

z=0
for i in range(n_x):z+=w[i]*x[i]z+=b

        如果为向量化实现,会直接计算w^{T}x,后面直接加上b:

z=np.dot(w,x)+b

         经过时间计算对比发现,非向量化的版本花费了300倍向量版本的时间:

         可扩展深度学习实现实在GPU上做的,GPU也叫做图像处理单元。而GPU和CPU都有并行化的指令,有时候叫做SIMD指令,意思是单指令流多数据流,意思是如果使用了这样的内置函数np.function或者其他能去掉for循环的函数,这样python的numpy能充分利用并行化更快地计算。GPU相比较于CPU更擅长SIMD计算。

2. 向量化的更多例子

例1:

当编写神经网络时,尽可能的避免for循环。若我们想要计算u=Av,即u_{i}=\sum_{i} \sum_{j}A_{ij}v_{j}

# 非向量化
for i in range (5)for j in range (5)u[i]+=A[i][j]*v[j]# 向量化
u=np.dot(A,v)

例2:

假设已经有一个向量vv=[v_{1},v_{2},...,v_{n}]^{T},求u=[e^{v_{1}} , e^{v_{2}}, ..., e^{v_{n}}]^{T},非向量化计算方法:

u=np.zeros((n,1))
for i in range (n):u[i]=math.exp(v[i])

向量化计算方法:

import numpy as np
u=np.exp(v)np.log(v)
np.abs(v)
np.maximux(v,0)

例3:

m个样本的梯度下降算法

 3. 向量化 logistic 回归(Vectorizing Logistic Regression)

        假设有m个样本,为了实现前向传播,需要计算出m个训练样本的预测结果。在下面的例子中,当加上一个常数b的时候,会将其自动拓展成一个1xm的向量,在python中也称为 “Broadcasting”。

 X=[x^{(1)},x^{(2)},...,x^{m}]

Z=[z^{(1)},z^{(2)},...,z^{m}]=w^{T}X+[b,b,b,...,b]_{1\cdot m}

A=[a^{(1)},...,a^{(m)}]=\sigma(z)

Z=np.dot(w.T,X)+b

 4. 向量化 logistic 回归的梯度输出

Z=np.dot(w.T,x)+b
A=σ(Z)
dZ=A-Y
dw=np.dot(X,dZ.T)/m
db=np.sum(dZ)/m
w:=w-a*dw
b:=w-a*dw

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com