小白學習之pytorch框架(5)-多層感知機(MLP)-(tensor、variable、計算圖、ReLU()、sigmoid()、tanh())


先記錄一下一開始學習torch時未曾記錄(也未好好弄懂哈)導致又忘記了的tensor、variable、計算圖

計算圖

計算圖直白的來說,就是數學公式(也叫模型)用圖表示,這個圖即計算圖。借用 https://hzzone.io/cs231n/%E7%90%86%E8%A7%A3-PyTorch-%E8%AE%A1%E7%AE%97%E5%9B%BE%E3%80%81Autograd-%E6%9C%BA%E5%88%B6%E5%92%8C%E5%AE%9E%E7%8E%B0%E7%BA%BF%E6%80%A7%E6%8B%9F%E5%90%88.html 一張圖 ,紅色圈里就是計算圖

Tensor應該是好懂的,就是一張量,百度一下就可以的。torch.tensor和numpy.ndarray可以相互轉換,

Variable本質上和Tensor一樣,Variable是對Tensor的封裝,操作和tensor基本一致,但是既然封裝了,肯定加了東西,加了什么呢?每個Variable被構建時都含三個屬性,1、tensor本身的.data(可取出Variable中tensor數值);2、對應tensor的梯度.grad(反向傳播的梯度);3、grad_fn屬性,如何得到的Variable的操作,如加減乘除。  

  detach()方法,官網解釋是從當前計算圖中分離的Variable,意思是通過此方法把requires_grad設置為False了,然后返回一個新的Variable,數據存放位置未變。

在博客 https://www.cnblogs.com/JadenFK3326/p/12072272.html 說了torch.mm()(正常矩陣相乘)和torch.mul()(矩陣對應值相乘)    參考博客 https://blog.csdn.net/da_kao_la/article/details/87484403 感謝博主   還有tensor乘法是torch.matmul()、torch.bmm()

  補充一下,torch.mm()是矩陣相乘,輸入的tenso維度只能兩維;torch.matmul()可以說是torch.mm()的boradcast版本,可以進行大於2維的tensor乘法。多個矩陣並行計算 官網解釋如下(看不懂英語自己在谷歌瀏覽器上打開官網,自動翻譯):

     torch.bmm(),兩個三維張量相乘,分別為(b*n*m)和(b*m*p),其中b代表batch_size,輸出為(b*n*p)

  torch.max(input,dim,keepdim=False,out=None):按維度dim返回最大值

  torch.max(input,other,out=None):兩個tensor:input和other元素相比較,返回大的那個

下面的多層感知機和激活函數都比較簡單,就說一下其公式了

多層感知機

  即含有至少一個隱藏層的由全連接層組成的神經網絡,且每個隱藏層的輸出通過激活函數進行變換

$ H = \varnothing (XW_{h})+b_{h} $

$ O = HW_{o}+b_{o} $

其中,$ \varnothing$表示激活函數

ReLU函數

$ ReLU(x) = max(x,0) $

Sigmoid函數

$ sigmoid(x) = \frac{1}{1 + exp(-x)} $

tanh函數

$ tanh(x) = \frac{1 - exp(-2x)}{1 + exp(-2x)} $


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM