【pytorch13】激活函數及梯度

什么是激活函數

計算機科學家借鑒生物的神經元機制發明了計算機上的模型,這個模型與生物的神經元非常類似
>
激活的意思就是z變量要大于0,這一個節點才會激活,否則就會處于睡眠狀態不會輸出電平值

該激活函數在z=0處不可導,因此不能直接使用梯度下降進行優化,使用了啟發式搜索的方法來求解單層感知機最優解的情況

sigmoid

為了解決單層感知機激活函數不可導的情況,提出了一個連續的光滑的函數即sigmoid函數或者叫logistic
在這里插入圖片描述
sigmoid函數z=0的時候值為0.5,最大值是接近于1,最小值是接近于0

比較適合生物學上的神經元,也就是說當z比較小的時候,接近于一個不響應的狀態,z很大的時候我這個響應也不會很大會慢慢接近于1,相當于一個壓縮的功能,把(-∞,+∞)Z的這樣的值壓縮到一個有限的范圍中間,比如(0,1)

該函數的導數在負無窮的時候接近于0,到z=0的時候會出現最大值,再慢慢導數再變成0
在這里插入圖片描述

有一個缺陷:loss長時間保持不變,梯度彌散

torch.sigmoid和F.sigmoid是一樣的
F是一個模塊的別名,是torch.nn.functional
在這里插入圖片描述

z的值接近于-100的時候,sigmoid的值已經接近于0了,取100的時候,sigmoid接近于1

Tanh

在RNN(循環神經網絡)中使用較多

在這里插入圖片描述

可以由sigmoid變化而來,將x壓縮二分之一,y放大兩倍,再減去1

區間從(-1,1)

在這里插入圖片描述

ReLu

z小于0不響應,z大于0就線性響應,非常合適做深度學習

在這里插入圖片描述
當z<0,梯度是0;z>0的時候,梯度是1,因為梯度是1,可以導致梯度計算起來非常方便,不會放大也不會縮小,因此對于搜索最優解,relu函數存在優勢,不會出現梯度彌散和梯度爆炸的情況
在這里插入圖片描述

loss以及loss的梯度

  • Mean Squared Error (均方差)
  • Cross Entropy Loss(用于分類中的誤差)
    • binary(二分類)
    • multi-class(多分類)
    • +softmax(一般跟softmax激活函數一起使用)
    • leave it to logistic regression part

MSE

在這里插入圖片描述
MSE的基本形式就是y的實際值減去模型輸出的值

MSE與L2-norm是有一定區別的,對于第一個tensor y1和第二個tensor xw+b 設其為y2,l2 norm是對應元素相減再開根號,如下
在這里插入圖片描述
所以跟MSE還是有區別的,MSE是沒有開根號這個步驟的

如果要用norm函數來求解MSE,需求平方,比如說
torch.norm(y-pred,2).pow(2)第二個參數是給出 L幾-norm,一定要加一個pow(2)

MSE梯度求解情況

在這里插入圖片描述

使用pytorch自動求導

在這里插入圖片描述
x初始化為1 w初始化為dimension為1,長度為1,值為2的tensor,b為0

求解MSE可以使用torch.norm加平方,也可以使用F.mse_loss第一個參數給的是predict的值,第二個參數給的是真實值,因為是平方所以這里順序亂了也沒有關系

使用torch.autograd.grad接收兩個參數,第一個參數是y,第二個參數是[x1,x2,…](即有多少個自變量,要對多少個自變量求導),對于深度學習來說,第一個參數就是predict,第二個參數是[w1,w2,…]這種參數

直接使用MSE也就是輸出的這個loss對W求導的時候,上圖返回該參數不需要求導的ERROR,出現該錯誤的根本原因是w初始化的時候沒有設置為需要導出信息,因此pytorch在建圖的時候對w標注了不需要求導信息,這樣對w求導就會觸發錯誤
需要使用requires_grad進行更新,但是更新完之后還是會報錯,因為pytorch是一個動態圖,這里更新了w但是圖還沒有更新,pytorch是做一步計算,一步圖,所以w更新之后,圖還是用的原來的圖,所以還是會出現原來的錯誤

使用另一種方法
在這里插入圖片描述
首先也是要用F.mse_loss動態圖建圖,直接在loss上使用backward(表示向后傳播),自動對這個圖(在完成前向傳播的時候建圖的過程中會記錄下來這個圖的所有路徑,因此在最后的loss節點調用backward的時候,會自動的從后往前傳播,完成路徑上所有需要梯度的tensor的gradient的計算方法,計算的gradient不會再返回出來,會自動把所有的gradient信息附加在每個tensor的成員變量上面)

在這里插入圖片描述

softmax

在這里插入圖片描述
首先對于三個節點的輸出,如果把這個數值轉換成一個概率的話,希望概率最大的那個值做預測的Label,比如這里輸入的索引是0,1,2,我們希望數值最大的值所在的索引作為我們預測的label,因此2.0最大,把2.0所在的索引0作為我們預測的一個label,因為probability是屬于一個區間的(0~1這樣的范圍),我們需要把這個值轉換成一個probability的話必須人為的壓縮到這樣的一個空間,可以使用sigmoid函數把值壓縮到0 ~ 1的區間,但是對于一個分類問題來說一個物體屬于哪個類是有一個概率的屬性的(即物體屬于x分類的概率,y分類的概率,z分類的概率等)總是屬于著三個分類中的一種,因此這三個分類加起來總是會等于1,即sigmoid并不能表述所有輸出節點的概率相加為1的情況,會把原來大的放大,原來小的壓縮到密集的空間

在這里插入圖片描述

a i a_{i} ai?經過softmax得到 p i p_{i} pi? p i p_{i} pi? a j a_{j} aj?求導,假設i=j時如右圖所示,softmax的梯度等于
在這里插入圖片描述
之所以要利用 p j p_{j} pj?的輸出是因為神經網絡向前傳播的時候,這些值是已知的可以直接得到,因此向后傳播的時候不需要額外計算,只需要利用這個公式就可以一次求出

當i不等于j的時候
在這里插入圖片描述
i不等于j的時候
在這里插入圖片描述

總結
在這里插入圖片描述
i=j時偏導時正數,不相等時是負數

在這里插入圖片描述
loss必須只有一個量[1],否則就會有邏輯錯誤,這里p.shape為[3],因此在求梯度的時候不能直接傳入p,只能對中的變量進行求導,此時圖中是 p 1 p_{1} p1? a i a_{i} ai? i屬于[0,2],所以會返回dimension為1 長度為3 的tensor,其中第一個元素表示 p 1 p_{1} p1? a 0 a_{0} a0?求偏導以此類推,可以看出如果i等于j的話梯度信息就是正的,其他的都是負的

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

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

相關文章

Asp .Net Core 系列:基于 Castle DynamicProxy + Autofac 實踐 AOP 以及實現事務、用戶填充功能

文章目錄 什么是 AOP &#xff1f;.Net Core 中 有哪些 AOP 框架&#xff1f;基于 Castle DynamicProxy 實現 AOPIOC中使用 Castle DynamicProxy實現事務管理實現用戶自動填充 什么是 AOP &#xff1f; AOP&#xff08;Aspect-Oriented Programming&#xff0c;面向切面編程&a…

OpenCV——把YOLO格式的圖片目標截圖,并按目標類別保存

import os import cv2def get_class_folder(catagetory,class_id, base_folder):# 根據類別ID創建文件夾路徑class_folder os.path.join(base_folder, catagetory[int(class_id)])if not os.path.exists(class_folder):os.makedirs(class_folder)return class_folderdef crop_…

VPN是什么?

VPN&#xff0c;全稱Virtual Private Network&#xff0c;即“虛擬私人網絡”&#xff0c;是一種在公共網絡&#xff08;如互聯網&#xff09;上建立加密、安全的連接通道的技術。簡單來說&#xff0c;VPN就像是一條在公共道路上鋪設的“秘密隧道”&#xff0c;通過這條隧道傳輸…

圖像的反轉

圖像顏色的反轉一般分為兩種&#xff1a;一種是灰度圖片的顏色反轉&#xff0c;另一種是彩色圖像的顏色反轉。 本節使用的原圖如下&#xff1a; 1.1 灰度圖像顏色反轉 灰度圖像每個像素點只有一個像素值來表示&#xff0c;色彩范圍在0-255之間&#xff0c;反轉方法255-當前像…

信創產業政策,信創測試方面

信創產業的政策支持主要體現在多個方面&#xff0c;這些政策旨在推動產業的快速發展&#xff0c;加強自主創新能力&#xff0c;保障國家信息安全&#xff0c;以及促進產業結構的優化升級。 首先&#xff0c;政府通過財政支持、稅收優惠等方式&#xff0c;加大對信創產業的資金…

8.ApplicationContext常見實現

ClassPathXmlApplicationContext 基于classpath下xml格式的配置文件來創建 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-i…

Flutter——最詳細(Drawer)使用教程

背景 應用左側或右側導航面板&#xff1b; 屬性作用elevation相當于陰影的大小 import package:flutter/material.dart;class CustomDrawer extends StatelessWidget {const CustomDrawer({Key? key}) : super(key: key);overrideWidget build(BuildContext context) {return…

解決SeaTunnel 2.3.4版本寫入S3文件報錯問題

在使用Apache SeaTunnel時&#xff0c;我遇到了一個寫入S3文件的報錯問題。通過深入調試和分析&#xff0c;找到了問題所在&#xff0c;并提出了相應的解決方案。 本文將詳細介紹報錯情況、參考資料、解決思路以及后續研究方向&#xff0c;希望對大家有幫助&#xff01; 一、…

代碼隨想錄算法訓練營第二天|【數組】977.有序數組的平方

題目 給你一個按 非遞減順序 排序的整數數組 nums&#xff0c;返回 每個數字的平方 組成的新數組&#xff0c;要求也按 非遞減順序 排序。 示例 1&#xff1a; 輸入&#xff1a;nums [-4,-1,0,3,10] 輸出&#xff1a;[0,1,9,16,100] 解釋&#xff1a;平方后&#xff0c;數組…

修改頭文件版本需要修改的文件

以修改ui的頭文件版本為例&#xff0c;還需要同時更新 PJ10PC20240120041_c928\components\master-t5\hikauto\module\app\include PJ10PC20240120041_c928\components\master-t5\hikauto\module\app\include\dsp PJ10PC20240120041_c928\components\master-t5\hikauto\incl…

C# Halcon目標檢測算法

在Halcon中進行目標檢測可以使用傳統的計算機視覺方法&#xff0c;也可以使用深度學習的方法。Halcon提供了豐富的函數庫來處理這些任務&#xff0c;而在C#中使用Halcon&#xff0c;你需要通過Halcon .NET接口。 以下是使用Halcon進行目標檢測的一般步驟&#xff0c;這里我將給…

DDL:針對于數據庫、數據表、數據字段的操作

數據庫的操作 # 查詢所有數據 SHOW DATABASE; #創建數據庫 CREATE DATABASE 2404javaee; #刪除數據庫 DROP DATABASE 2404javaee; 數據表的操作 #創建表 CREATE TABLE s_student( name VARCHAR(64), s_sex VARCHAR(32), age INT(3), salary FLOAT(8,2), c_course VARC…

Windows 的 MFC開發的使用示例——講得挺好的

【Visual Studio 2019】創建 MFC 桌面程序 ( 安裝 MFC 開發組件 | 創建 MFC 應用 | MFC 應用窗口編輯 | 為按鈕添加點擊事件 | 修改按鈕文字 | 打開應用 )-騰訊云開發者社區-騰訊云 (tencent.com)

【算法】(C語言):堆排序

堆&#xff08;二叉樹的應用&#xff09;&#xff1a; 完全二叉樹。最大堆&#xff1a;每個節點比子樹所有節點的數值都大&#xff0c;根節點是最大值。父子索引號關系&#xff08;根節點為0&#xff09;&#xff1a;&#xff08;向上&#xff09;子節點x&#xff0c;父節點(x…

datawhale大模型應用開發夏令營學習筆記一

參考自 基于LangChainLLM的本地知識庫問答&#xff1a;從企業單文檔問答到批量文檔問答datawhale的llm-universe 作者現在在datawhale夏令營的大模型應用開發這個班中&#xff0c;作為一個小白&#xff0c;為了能為團隊做出一點貢獻&#xff0c;現在就要開始學習怎么使用langch…

實戰教程:如何用JavaScript構建一個功能強大的音樂播放器,兼容本地與在線資源

項目地址&#xff1a;Music Player App 作者&#xff1a;Reza Mehdikhanlou 視頻地址&#xff1a;youtube 我將向您展示如何使用 javascript 編寫音樂播放器。我們創建一個項目&#xff0c;您可以使用 javascript 從本地文件夾或任何 url 播放音頻文件。 項目目錄 assets 1…

頂級10大AI測試工具

每周跟蹤AI熱點新聞動向和震撼發展 想要探索生成式人工智能的前沿進展嗎&#xff1f;訂閱我們的簡報&#xff0c;深入解析最新的技術突破、實際應用案例和未來的趨勢。與全球數同行一同&#xff0c;從行業內部的深度分析和實用指南中受益。不要錯過這個機會&#xff0c;成為AI領…

暑期編程預習指南

暑期編程預習指南 高考結束后&#xff0c;迎來的是一段難得的假期時光。對于那些有志于踏入IT領域的高考生來說&#xff0c;這段時間無疑是一個重要的起點。為了幫助你們更好地利用這個假期&#xff0c;為未來的學習和職業生涯打下堅實的基礎&#xff0c;特此提供一份編程預習…

JWT入門

JWT與TOKEN JWT&#xff08;JSON Web Token&#xff09;是一種基于 JSON 格式的輕量級安全令牌&#xff0c;通常用于在網絡應用間安全地傳遞信息。而“token”一詞則是一個更廣泛的術語&#xff0c;用來指代任何形式的令牌&#xff0c;用于在計算機系統中進行身份驗證或授權。J…

【?講解下Laravel為什么會成為最優雅的PHP框架?】

&#x1f3a5;博主&#xff1a;程序員不想YY啊 &#x1f4ab;CSDN優質創作者&#xff0c;CSDN實力新星&#xff0c;CSDN博客專家 &#x1f917;點贊&#x1f388;收藏?再看&#x1f4ab;養成習慣 ?希望本文對您有所裨益&#xff0c;如有不足之處&#xff0c;歡迎在評論區提出…