Python實現(xiàn)softmax反向傳播的示例代碼
概念
softmax函數(shù)是常用的輸出層函數(shù),常用來解決互斥標(biāo)簽的多分類問題。當(dāng)然由于他是非線性函數(shù),也可以作為隱藏層函數(shù)使用
反向傳播求導(dǎo)
可以看到,softmax 計算了多個神經(jīng)元的輸入,在反向傳播求導(dǎo)時,需要考慮對不同神經(jīng)元的參數(shù)求導(dǎo)。
分兩種情況考慮:
- 當(dāng)求導(dǎo)的參數(shù)位于分子時
- 當(dāng)求導(dǎo)的參數(shù)位于分母時
當(dāng)求導(dǎo)的參數(shù)位于分子時:
當(dāng)求導(dǎo)的參數(shù)位于分母時(ez2 or ez3這兩個是對稱的,求導(dǎo)結(jié)果是一樣的):
代碼
import torch import math def my_softmax(features): _sum = 0 for i in features: _sum += math.e ** i return torch.Tensor([ math.e ** i / _sum for i in features ]) def my_softmax_grad(outputs): n = len(outputs) grad = [] for i in range(n): temp = [] for j in range(n): if i == j: temp.append(outputs[i] * (1- outputs[i])) else: temp.append(-outputs[j] * outputs[i]) grad.append(torch.Tensor(temp)) return grad if __name__ == '__main__': features = torch.randn(10) features.requires_grad_() torch_softmax = torch.nn.functional.softmax p1 = torch_softmax(features,dim=0) p2 = my_softmax(features) print(torch.allclose(p1,p2)) n = len(p1) p2_grad = my_softmax_grad(p2) for i in range(n): p1_grad = torch.autograd.grad(p1[i],features, retain_graph=True) print(torch.allclose(p1_grad[0], p2_grad[i]))
到此這篇關(guān)于Python實現(xiàn)softmax反向傳播的示例代碼的文章就介紹到這了,更多相關(guān)Python softmax 反向傳播內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
TFRecord格式存儲數(shù)據(jù)與隊列讀取實例
今天小編就為大家分享一篇TFRecord格式存儲數(shù)據(jù)與隊列讀取實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-0120行Python代碼實現(xiàn)一款永久免費(fèi)PDF編輯工具的實現(xiàn)
這篇文章主要介紹了20行Python代碼實現(xiàn)一款永久免費(fèi)PDF編輯工具的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08Django 開發(fā)調(diào)試工具 Django-debug-toolbar使用詳解
這篇文章主要介紹了Django 開發(fā)調(diào)試工具 Django-debug-toolbar使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-07-07Python中使用socket發(fā)送HTTP請求數(shù)據(jù)接收不完整問題解決方法
這篇文章主要介紹了Python中使用socket發(fā)送HTTP請求數(shù)據(jù)接收不完整問題解決方法,本文使用一個循環(huán)解決了數(shù)據(jù)不完整問題,需要的朋友可以參考下2015-02-02python+mysql實現(xiàn)教務(wù)管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python+mysql實現(xiàn)教務(wù)管理系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-02-02