反向傳播BP算法

神經網絡的反向傳播

  • 反向傳播機制與代碼
    • 微分引擎與代碼
    • 原理闡述

如需轉載,請注明出處!
如有幫助點贊收藏關注!

反向傳播機制與代碼

這里主要介紹反向傳播是如何運作的,代碼中會加注釋,便于大家理解。
在訓練神經網絡時,最常用的算法是反向傳播(back propagation)。在該算法中,根據損失函數計
算給定參數的梯度來調整參數(模型權重)。

微分引擎與代碼

為了計算反向傳播中的梯度,PyTorch有一個內置的微分引擎,叫做torch.autograd。它支持任何計算圖的梯度自動計算。

  • 假設一個簡單的一層神經網絡,輸入x,輸出為z,參數是w和b.在這個網絡中,w和b是我們需要
    優化的參數。因此,我們需要能夠計算關于這些變量的損失函數的梯度。
  • 為了做到這一點,我們設置了這些張量的requires_grad性質。在pytorch中實現如下:
import torch
x = torch.ones(5) # input tensor
y = torch.zeros(3) # expected output
w = torch.randn(5, 3, requires_grad=True)
b = torch.randn(3, requires_grad=True)
z = torch.matmul(x, w)+b #z=wx+b
#交叉熵損失函數
loss = torch.nn.functional.binary_cross_entropy_with_logits(z, y)
#反向傳播函數的引用存儲在一個張量的grad_fn屬性中
print('Gradient function for z =',z.grad_fn)
print('Gradient function for loss =', loss.grad_fn)
#優化器
optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)
  • 梯度計算,為了優化神經網絡中參數的權值,我們需要計算損失函數對參數的導數,可以直接
    調用 loss.backward()
loss.backward()
print(w.grad)
print(b.grad)
  • 禁用梯度計算:默認情況下,所有requires_grad=True的張量都跟蹤它們的計算歷史并支持
    梯度計算。但是,在某些情況下,我們并不需要這樣做,例如,當我們訓練了模型,只是想跑
    一下前向測試我們的數據。我們可以通過使用detach()或者torch.no_grad()塊包圍計算代碼來
    禁止梯度計算
z = torch.matmul(x, w)+b
print(z.requires_grad)
#方法1 使用no_grad
with torch.no_grad():
z = torch.matmul(x, w)+b
print(z.requires_grad)
#方法2 使用detach()
z_det = z.detach()
print(z_det.requires_grad)

原理闡述

1.前向傳播:輸入樣本經過神經網絡的前向傳播,得到輸出值。
2.計算誤差:將輸出值與期望值進行比較,得到誤差值。
3.反向傳播誤差:將誤差值從輸出層開始反向傳播,計算每個神經元的誤差貢獻。
4.更新權重和偏置:根據誤差貢獻來更新權重和偏置,使得誤差逐漸減小。
5.重復以上步驟,知道神經網絡的性能達到預期。

反向傳播算法的性能主要取決于初始權重和偏置的選擇,學習率的設置以及訓練數據集的多樣性。如果權重和偏置的初始值選的不太好,可能會導致神經網絡無法收斂。如果學習率設置的過高,可能會導致權重和偏置更新過于頻繁。無法收斂,如果學習率設置的過低,可能會導致收斂速度過慢。

在正常的圖像測試模型準確率的情況下,不開啟反向傳播,直接正向傳播計算。

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

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

相關文章

抖音商城小程序源碼系統 附帶完整的搭建教程

大家好啊,今天小編來給大家分享一款抖音商城小程序源碼系統。這可是當下最熱門的的項目之一。。抖音作為國內最大的短視頻平臺之一,擁有龐大的用戶群體和豐富的社交功能。為了滿足用戶在抖音上購物和交易的需求,抖音商城小程序應運而生。 以…

租車系統開發/多功能租車平臺微信小程序源碼/汽車租賃系統源碼/汽車租賃小程序系統

源碼介紹: 多功能租車平臺微信小程序源碼,作為汽車租賃、摩托車租車平臺系統源碼,是小程序系統。基于微信小程序的汽車租賃系統源碼。 開發環境及工具: 大等于jdk1.8,大于mysql5.5,idea(eclip…

拆解:淘寶客新玩法之微信淘禮金創建怎么做

最近看到一種新的淘寶客玩法,迫不及待的想分享給大家。微信公眾號查券大家都不陌生,也有不少人都在做這個。最近看到有人在做微信公眾號創建淘禮金。之所以說這個玩法新是因為目前大多數淘客還在做返利。返利有周期長、提現有門檻等痛點。 微信公眾號創建…

基于Springcloud微服務框架智慧工地系統源碼

建筑行業快速發展,各建筑工程的建設規模在不斷擴大,各崗位工作人員的工作內容所涉及的方面也越來越廣泛。隨著信息技術水平不斷提高,人工記錄的方式已經不能夠滿足大項目的管理要求,就此,創造出一種新型的施工管理技術——智慧工地…

攜程token

網址:https://flights.ctrip.com/ 記錄一下這個要我狗命的token 原本以為解決驗證碼就能繼續查機票信息,奈何太年輕,或者說原本以為這個頭部信息的token不重要,其實還是很重要的。 關于查價格 ,如果說查詢頻繁之后就…

小型內衣褲洗衣機哪個牌子好?性價比小型洗衣機推薦

內衣內褲應該如何清洗才能實現在不傷衣的同時有能夠洗干凈呢?其實除了使用溫水搭配手洗以外,還有一些清洗方式,那就是選擇一臺專門為內衣定制的內衣洗衣機。目前內衣洗衣機由于精致小巧,方便安裝,方便使用,…

關于內存與實際數據之間一些理解

//// 16位無符號強轉有符號 測試用例// 由于第一位表示正負的位是0,強制轉換有符號后,仍然是0,所以無影響 0-32767 (3276715個1,最左邊符號位仍然是0)之間都是無影響的unsigned short* pUS new unsigned s…

分布式冪等

分布式冪等 在分布式系統、網絡通信和數據庫操作中,冪等性是一個非常重要的概念,特別是在面對可能發生網絡故障、消息重復、或者系統崩潰等情況時。 舉個簡單的例子,考慮一個銀行轉賬的操作。如果轉賬操作是冪等的,那么無論你執…

PC分頁操作以及loading效果

page-size 每頁顯示條目個數 current-page 當前頁數 total 數據總數 current-change【currentPage 改變時會觸發】 切換分頁時會先加載,等在接口數據,接口返回,加載會關閉(在獲取接口數據完畢哪里加上this.loadingfalse&#xff0…

低權限(無權限)時如何在mysql客戶端控制臺的大量輸出中快速定位mysql死鎖或慢sql

查看mysql的查看死鎖的方式很多,但很多時候我們普通開發者的權限比較低,無法執行某命令。比如本次就準備使用 SHOW ENGINE INNODB STATUS;命令,但客戶端提示權限不夠。后來本人找到了另一條低權限的命令 show full PROCESSLIST;但是show fu…

比例減壓閥放大器選型

控制閥型如比例插裝閥、比例方向閥、比例壓力閥、比例流量閥、比例疊加閥等,安裝方式有插式及導軌卡槽式,輸入指令可選0-10V、4-20mA、10V、0-5V,輸出電流可選最大3A,適用各大品牌不帶電反饋常規比例閥匹配度,控制比例…

1553. 吃掉 N 個橘子的最少天數(記憶化+貪心優化)

Problem: 1553. 吃掉 N 個橘子的最少天數 文章目錄 題目思路Code 題目 使得 n 變成0的操作有三種方式 : 吃掉一個橘子。如果剩余橘子數 n 能被 2 整除,那么你可以吃掉 n/2 個橘子。如果剩余橘子數 n 能被 3 整除,那么你可以吃掉 2*(n/3) 個…

易點易動設備管理系統提升設備能耗管理和設備狀態監控效率

如今,能源效率和設備狀態監控對于企業來說變得越發重要。傳統的設備管理方式往往存在能耗浪費和難以實時監控設備狀態的問題。為了解決這些問題,易點易動設備管理系統應運而生。本文將介紹易點易動設備管理系統的功能和優勢,以及如何通過它提…

Oracle數據庫安裝踩坑記錄

Oracle數據庫安裝踩坑記錄 踩坑目錄 可能會用到的教程1. 管理員用戶(sys)登錄oracle命令2. 默認密碼:三個 如果忘記改密碼參考 1. 登錄后修改密碼3. 查看賬號密碼:只有sys用戶登錄后才能查看4. sqldeveloper 連接oracle數據庫5. o…

簡墨的進化之路:打造大模型數據計算系統的云存儲底座

10月24日程序員節,「大模型數據計算系統」2023拓數派年度技術論壇在上海圓滿落幕,拓數派大模型數據計算系統(PieDataComputingSystem,縮寫:πDataCS)如約而至!πDataCS 以云原生技術重構數據存儲…

論文淺嘗 | 用于文檔級事件關系抽取的稀疏事件表示的判別推理

筆記整理:鄒銘輝,天津大學碩士,研究方向為自然語言處理 鏈接:https://aclanthology.org/2023.acl-long.897 動機 文檔級事件關系抽取(Document-level Event-Event Relation Extraction,簡稱DERE&#xff09…

vite配置proxy代理

如下代碼: "/cygl/api/cyfx" 和 "/cygl/api" 兩個代理配置。 如果將"/cygl/api/cyfx"放到"/cygl/api"的下邊,那么"/cygl/api/cyfx"代理將會失效。 因為他們的前置路徑一樣。會先行匹配掉/cygl/api 在…

【TypeScrpt算法】算法的復雜度分析

算法的復雜度分析 什么是算法復雜度? 不同的算法,其實效率是不一樣的 讓我舉一個案例來比較兩種不同的算法在查找數組中給定元素的時間復雜度 [1,2,3,4,5,6,7,...9999,n] 順序查找 這種方法從頭到尾遍歷整個數組,依次比較每個元素和給定元…

SAP-查看業務變更記錄

一、通過事務碼查詢修改記錄 1、輸入TCODE:AUT10,輸入時間和事務處理代碼,全部搜索輸入*。 2、點擊刷新,對已輸入的條件進行重置。 3、在左側下菜單,選擇要查詢的事務記錄,雙擊,會帶入“事務處…