【深度学习神经网络学习笔记(三)】向量化编程

向量化编程

向量化编程

前言

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

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

1、向量化编程

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

2、向量化优势

由于在进行计算的时候,最好不要使用 for 循环去进行计算,使用 Numpy 可以进行更加快速的向量化计算。

例如:

  • 使用 for 循环

    python 复制代码
    import numpy as np
    import time
    
    a = 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

    python 复制代码
    import numpy as np
    import time
    
    a = 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、正向传播和反向传播

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

相关推荐
hyshhhh7 小时前
【算法岗面试题】深度学习中如何防止过拟合?
网络·人工智能·深度学习·神经网络·算法·计算机视觉
薛定谔的猫-菜鸟程序员7 小时前
零基础玩转深度神经网络大模型:从Hello World到AI炼金术-详解版(含:Conda 全面使用指南)
人工智能·神经网络·dnn
Listennnn7 小时前
优雅的理解神经网络中的“分段线性单元”,解剖前向和反向传播
人工智能·深度学习·神经网络
牙牙要健康9 小时前
【目标检测】【深度学习】【Pytorch版本】YOLOV3模型算法详解
pytorch·深度学习·目标检测
Scc_hy10 小时前
强化学习_Paper_1988_Learning to predict by the methods of temporal differences
人工智能·深度学习·算法
誉鏐10 小时前
从零开始设计Transformer模型(1/2)——剥离RNN,保留Attention
人工智能·深度学习·transformer
神经星星11 小时前
无需预对齐即可消除批次效应,东京大学团队开发深度学习框架STAIG,揭示肿瘤微环境中的详细基因信息
人工智能·深度学习·机器学习
Xiaok101811 小时前
解决 Hugging Face SentenceTransformer 下载失败的完整指南:ProxyError、SSLError与手动下载方案
开发语言·神经网络·php
程序员Linc11 小时前
写给新人的深度学习扫盲贴:向量与矩阵
人工智能·深度学习·矩阵·向量
补三补四11 小时前
机器学习-聚类分析算法
人工智能·深度学习·算法·机器学习