您的位置:首页 > 健康 > 养生 > 濮阳百度推广_深圳专业网站建设排名_廊坊百度快照优化排名_2023年的新闻十条

濮阳百度推广_深圳专业网站建设排名_廊坊百度快照优化排名_2023年的新闻十条

2025/2/26 16:03:33 来源:https://blog.csdn.net/sallyyellow/article/details/145854806  浏览:    关键词:濮阳百度推广_深圳专业网站建设排名_廊坊百度快照优化排名_2023年的新闻十条
濮阳百度推广_深圳专业网站建设排名_廊坊百度快照优化排名_2023年的新闻十条

向量化编程

    • 向量化编程
    • 前言
    • 1、向量化编程
    • 2、向量化优势
    • 3、正向传播和反向传播

向量化编程

前言

向量化编程是一种利用专门的指令集或并行算法来提高数据处理效率的技术,尤其在科学计算、数据分析和机器学习领域中非常常见。它允许通过一次操作处理整个数组或矩阵的数据,而不是通过循环逐个处理每个元素。这种方法不仅简化了代码,而且能够显著提高程序运行速度,因为它更有效地利用了现代 CPU 的并行计算能力。

备注:本系列文章基于B站课程: 122集付费!CNN、RNN、GAN、GNN、DQN、Transformer、LSTM等八大深度学习神经网络一口气全部学完!学习整理得到。

1、向量化编程

没更新一次梯度时候,在训练期间我们会拥有 m 个样本,那么这样每个样本提供进去都可以做一个梯度计算。所以我们要去做所有样本上的计算结果、梯度等操作。
在这里插入图片描述

2、向量化优势

由于在进行计算的时候,最好不要使用 for 循环去进行计算,使用 Numpy 可以进行更加快速的向量化计算。
在这里插入图片描述
例如:

  • 使用 for 循环

    import numpy as np
    import timea = np.random.rand(100000)
    b = np.random.rand(100000)
    # 第一种 for 循环
    c = 0
    start = time.time()
    for i in range(100000):c += a[i] * b[i]
    end = time.time()
    print(c)
    print("计算耗时:%s" % str((end - start) * 1000) + 'ms')
  • 使用 np.dot

    import numpy as np
    import timea = np.random.rand(100000)
    b = np.random.rand(100000)
    d = a * b
    # 向量化运算 np.dot()
    start1 = time.time()
    c1 = np.dot(a, b)
    end1 = time.time()
    print(c1)
    print("计算耗时:%s" % str((end1 - start1) * 1000) + 'ms')
    

运行结果如下:
在这里插入图片描述
可以看到 Numpy 能够充分的利用并行化。

Numpy 中提供了很多函数使用

函数作用
np.ones or np,zeros全为1或者0的矩阵
np.exp指数计算
np.log对数计算
np.abs绝对值计算

所以上述的 m 个样本的梯度更新过程,就是去除掉 for 循环

3、正向传播和反向传播

前面我们所做的整个过程分为两个部分,一个是从前往后的计算出梯度和损失,另一部分是从后往前计算参数的更新梯度值。所以在神经网络中经常会出现这两个概念。

版权声明:

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

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