xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 6KB
    文件類型: .py
    金幣: 1
    下載: 0 次
    發布日期: 2021-06-16
  • 語言: Python
  • 標簽: python??numpy??

資源簡介

本代碼利用numpy實現了深度前饋網絡;代碼包括了網絡深度,每層的單元數和每層的激活函數可以自選,BP算法;最后跟了一個多項式擬合的例子。該代碼適合深度學習初學者。

資源截圖

代碼片段和文件信息

#?=============================================================================
#?深度前饋網絡框架
#?????多項式(正弦)擬合任務,需要numpy包和matplotlib包;
#???????????????????????????????????????????????????????Written?By?Wang?Chunlei
#?=============================================================================

#------------------?定義深度前饋網絡?-------------------------------------
import?numpy?as?np
class?MyDfn:
????__WtInitVar?=?0.01?#初始權值服從標準正態分布,該參數控制方差
????__BsInitAmp?=?0.01?#初始閾值服從均勻分布,該參數控制取值范圍
????__miu?=?0.02?#隨機梯度下降學習率
????
????#?網絡初始化函數
????def?__init__(self?InputLen=1?layerNum=0?UnitNum=[]?ActiveFcs=[]):
????????self.layerNum?=?layerNum?#網絡層數(int)
????????self.InputLen?=?InputLen?#網絡輸入數據長度(int)
????????self.WeightMts?=[]?#網絡各層權值list內容為numpy矩陣
????????self.BiasVc?=?[]?#網絡各層閾值list內容為numpy矩陣
????????self.ActiveFcs?=[]?#網絡各層的激活函數list內容為函數指針
????????self.UnitNum?=?[]?#網絡各層的單元數numpy數組?????
????????#?如果網絡層數等于0
????????if(self.layerNum?==?0):
????????????return
????????#?每層網絡的單元數目
????????if(UnitNum.size?==?layerNum):
????????????self.UnitNum?=?UnitNum
????????else:
????????????print(“UnitNum長度和layerNum不等“)
????????????return
????????#?每層網絡的激活函數和導數對應的函數指針
????????if(len(ActiveFcs)?!=?self.layerNum):
????????????print(“ActiveFcs維度有誤“)
????????????return
????????else:
????????????self.ActiveFcs?=?ActiveFcs
????????#?初始化網絡????????
????????self.WeightMts.append(?self.__WtInitVar*np.random.randn(UnitNum[0]?InputLen)?)
????????self.BiasVc.append(?self.__BsInitAmp*np.random.rand(UnitNum[0]1)?)
????????for?idi?in?range(1?self.layerNum):
????????????self.WeightMts.append(self.__WtInitVar*np.random.randn(UnitNum[idi]?UnitNum[idi-1]))
????????????self.BiasVc.append(self.__BsInitAmp*np.random.rand(UnitNum[idi]1))
????
????#?顯示網絡結構函數????
????def?PrintNetworkInfo(self):???????????
????????print(“網絡層數=%d“?%?self.layerNum)
????????if(self.layerNum?>=?1):
????????????print(“第1層:輸入數據長度=%d,該層單元數=%d“?%?(self.InputLen?self.UnitNum[0]))
????????????for?idi?in?range(1?self.layerNum):
????????????????print(“第%d層:輸入數據長度=%d,該層單元數=%d“?%?(idi+1?self.UnitNum[idi-1]?self.UnitNum[idi]))
????
????#?前饋函數(Input為numpy列向量)
????def?Forward(self?Input):
????????if(Input.shape?!=?(self.InputLen?1)):
????????????print(“輸入數據維度和網絡不符“)
????????????return?0.0
????????#?self.LyVals是一個長度為(self.layerNum+1)的列表
????????#?第一個元素是網絡輸入值,后面依次是各層輸出值
????????#?self.LyDris是一個長度為self.layerNum的列表,每個元素都是對應層輸出的導數
????????self.LyVals?=?[Input]
????????self.LyDris?=?[]
????????for?idi?in?range(self.layerNum):
????????????ZVal?=?np.dot(self.WeightMts[idi]?self.LyVals[idi])?+?self.BiasVc[idi]
????????????ValTmp?DriTmp?=?self.ActiveFcs[

評論

共有 條評論