【深度學習神經網絡學習筆記(三)】向量化編程

向量化編程

    • 向量化編程
    • 前言
    • 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、正向傳播和反向傳播

前面我們所做的整個過程分為兩個部分,一個是從前往后的計算出梯度和損失,另一部分是從后往前計算參數的更新梯度值。所以在神經網絡中經常會出現這兩個概念。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/896316.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/896316.shtml
英文地址,請注明出處:http://en.pswp.cn/news/896316.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

海康威視攝像頭RTSP使用nginx推流到服務器直播教程

思路: 之前2020年在本科的時候,由于項目的需求需要將海康威視的攝像頭使用推流服務器到網頁進行直播。這里將自己半個月琢磨出來的步驟給大家發一些。切勿轉載!!!! 使用網絡攝像頭中的rtsp協議---------通…

鴻蒙開發深入淺出03(封裝通用LazyForEach實現懶加載)

鴻蒙開發深入淺出03(封裝通用LazyForEach實現懶加載) 1、效果展示2、ets/models/BasicDataSource.ets3、ets/models/HomeData.ets4、ets/api/home.ets5、ets/pages/Home.ets6、ets/views/Home/SwiperLayout.ets7、后端代碼 1、效果展示 2、ets/models/Ba…

【Rust中級教程】2.8. API設計原則之靈活性(flexible) Pt.4:顯式析構函數的問題及3種解決方案

喜歡的話別忘了點贊、收藏加關注哦(加關注即可閱讀全文),對接下來的教程有興趣的可以關注專欄。謝謝喵!(・ω・) 說句題外話,這篇文章一共5721個字,是我截至目前寫的最長的一篇文章&a…

一周學會Flask3 Python Web開發-Jinja2模板過濾器使用

鋒哥原創的Flask3 Python Web開發 Flask3視頻教程: 2025版 Flask3 Python web開發 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili 在Jinja2中,過濾器(filter)是一些可以用來修改和過濾變量值的特殊函數,過濾器和變量用一個豎線 | &a…

數據庫 安裝initializing database不通過

出現一下情況時: 處理方法: 將自己的電腦名稱 中文改成英文 即可通過

嵌入式開發:傅里葉變換(5):STM32和Matlab聯調驗證FFT

目錄 1. MATLAB獲取 STM32 的原始數據 2. 將數據上傳到電腦 3. MATLAB 接收數據并驗證 STM32進行傅里葉代碼 結果分析 STM32 和 MATLAB 聯調是嵌入式開發中常見的工作流程,通常目的是將 STM32 采集的數據或控制信號傳輸到 MATLAB 中進行實時處理、分析和可視化…

Mobaxterm服務器常用命令(持續更新)

切換文件夾 cd path # for example, cd /gpu03/deeplearning/進入不同GPU ssh mgmt ssh gpu01 ssh gpu03尋找文件位置 find /path -name file_name #for example, find / -name lib #在根目錄下搜尋名為lib文件 #for example, find /home/deeplearning -name "lib"…

MFC文件和注冊表的操作

MFC文件和注冊表的操作 日志、操作配置文件、ini、注冊表、音視頻的文件存儲 Linux下一切皆文件 C/C操作文件 const char* 與 char* const const char* 常量指針,表示指向的內容為常量。指針可以指向其他變量,但是內容不能再變了 char szName[6]&qu…

微信小程序源碼逆向 MacOS

前言 日常工作中經常會遇到對小程序的滲透測試,微信小程序的源碼是保存在用戶客戶端本地,在滲透的過程中我們需要提取小程序的源碼進行問題分析,本篇介紹如何在蘋果電腦 MacOS 系統上提取微信小程序的源碼。 0x01 微信小程序提取 在蘋果電…

ubuntu-24.04.1-desktop 中安裝 QT6.7

ubuntu-24.04.1-desktop 中安裝 QT6.7 1 環境準備1.1 安裝 GCC 和必要的開發包:1.2 Xshell 連接 Ubuntu2 安裝 Qt 和 Qt Creator:2.1 下載在線安裝器2.2 在虛擬機中為文件添加可執行權限2.3 配置鏡像地址運行安裝器2.4 錯誤:libxcb-xinerama.so.0: cannot open shared objec…

告別 Freetype,擁抱高效字體處理新方案 - 純c#解析字體庫

在當今數字化的時代,字體處理在眾多領域中都扮演著至關重要的角色,無論是平面設計、網頁開發,還是移動應用、游戲制作,合適的字體選擇與精準的處理都能極大地提升用戶體驗。而在字體處理的技術領域,Freetype 庫一直是開…

React + TypeScript 復雜布局開發實戰

React TypeScript 復雜布局開發實戰 一、項目架構設計(基于最新技術棧) 1.1 技術選型與工程創建 # 使用Vite 5.x React 19 TypeScript 5.4 npx create-vitelatest power-designer-ui --template react-ts cd power-designer-ui && npm inst…

從最小依賴角度談靜態庫與動態庫的選擇及配置策略

文章目錄 1. 前言2. 靜態庫與動態庫:依賴最小化的抉擇2.1 靜態庫概述2.2 動態庫概述2.3 依賴最小化角度的選擇建議 3. 運行時庫配置策略:/MT 與 /MD 的取舍3.1 /MT 與 /MD 的優劣比較3.2 配置選擇的建議 4. 實際案例與配置示例4.1 靜態庫示例&#xff08…

深度學習pytorch之19種優化算法(optimizer)解析

提示:有謬誤請指正 摘要 本博客詳細介紹了多種常見的深度學習優化算法,包括經典的LBFGS 、Rprop 、Adagrad、RMSprop 、Adadelta 、ASGD 、Adamax、Adam、AdamW、NAdam、RAdam以及SparseAdam等,通過對這些算法的公式和參數說明進行詳細解析…

【深度學習神經網絡學習筆記(二)】神經網絡基礎

神經網絡基礎 神經網絡基礎前言1、Logistic 回歸2、邏輯回歸損失函數3、梯度下降算法4、導數5、導數計算圖6、鏈式法則7、邏輯回歸的梯度下降 神經網絡基礎 前言 Logistic 回歸是一種廣泛應用于統計學和機器學習領域的廣義線性回歸模型,主要用于解決二分類問題。盡…

002簡單MaterialApp主題和Scaffold腳手架

002最簡單的MaterialApp主題和Scaffold腳手架使用導航欄_嗶哩嗶哩_bilibilihttps://www.bilibili.com/video/BV1RZ421p7BL?spm_id_from333.788.videopod.episodes&vd_source68aea1c1d33b45ca3285a52d4ef7365f&p1501.MaterialApp純凈的 /*MaterialApp 是主題,自帶方向設…

DeepSeek開源周Day1:FlashMLA引爆AI推理性能革命!

項目地址:GitHub - deepseek-ai/FlashMLA 開源日歷:2025-02-24起 每日9AM(北京時間)更新,持續五天! ? 一、開源周震撼啟幕 繼上周預告后,DeepSeek于北京時間今晨9點準時開源「FlashMLA」,打響開源周五連…

17.C++類型轉換

1. C語言中的類型轉換 在C語言中,如果賦值運算符左右兩側類型不同,或者形參與實參類型不匹配,或者返回值類型與接收返回值類型不一致時,就需要發生類型轉換,C語言中共有兩種形式的類型轉換:隱式類型轉換和顯…

springboot志同道合交友網站設計與實現(代碼+數據庫+LW)

摘 要 現代經濟快節奏發展以及不斷完善升級的信息化技術,讓傳統數據信息的管理升級為軟件存儲,歸納,集中處理數據信息的管理方式。本志同道合交友網站就是在這樣的大環境下誕生,其可以幫助使用者在短時間內處理完畢龐大的數據信…

VMware中的linux常用指令

常用 Linux 基礎命令 文件與目錄操作 ls:查看當前目錄的文件和子目錄,ls -a顯示所有文件,包括隱藏文件。cd:切換目錄,如 **cd ~** 切換到個人家目錄。pwd:查看當前目錄。mkdir:創建文件夾&#…