成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Python完成1個(gè)全連接層的神經(jīng)元網(wǎng)絡(luò)

89542767 / 463人閱讀

  本文關(guān)鍵闡述了Python完成1個(gè)全連接層的神經(jīng)元網(wǎng)絡(luò),文章內(nèi)容緊扣主題進(jìn)行詳盡的基本介紹,具有很強(qiáng)的實(shí)用價(jià)值,必須的朋友可以學(xué)習(xí)一下


  序言


  在本文中,提前準(zhǔn)備用Python重新開始完成1個(gè)全連接層的神經(jīng)元網(wǎng)絡(luò)。你可能會(huì)說,為何需要自己去完成,有許多庫(kù)和架構(gòu)能夠給我們做這些事,例如Tensorflow、Pytorch等。這兒只想說僅有自己親自完成了,就是自己的。


  想起今日他從接觸到了從事神經(jīng)元網(wǎng)絡(luò)有關(guān)工作早已是多少2、3年多,在其中也試著用tensorflow或pytorch架構(gòu)去完成某些傳統(tǒng)互聯(lián)網(wǎng)。但是對(duì)于反向傳播身后體制還是挺模糊不清。


  梯度方向


  梯度方向是函數(shù)公式升高更快方位,速度最快的方位換句話說正確的方向函數(shù)公式樣子很險(xiǎn)峻,那樣都是函數(shù)公式減少速度最快的方位。


  盡管有關(guān)某些基礎(chǔ)理論、梯度消失和節(jié)點(diǎn)飽和狀態(tài)能夠傷害1個(gè)1、2、3可是細(xì)究或是沒有自信,當(dāng)然沒有親自動(dòng)手去完成過個(gè)反向傳播和完善練習(xí)全過程。所以覺得或是浮于表層,學(xué)有所用而。


  最近這幾天有段空余時(shí)間、因此運(yùn)用這一段休息日即將把這一部分知識(shí)總結(jié)一下下、全面了解掌握

01.png

  大家可能很多人都清楚訓(xùn)練神經(jīng)網(wǎng)絡(luò)的一個(gè)過程,便是升級(jí)網(wǎng)絡(luò)參數(shù),升級(jí)更新的趨勢(shì)是減少交叉熵值。其實(shí)就是將學(xué)習(xí)上的問題變換因?yàn)橐粋€(gè)改善的難題。我們?cè)撊绾紊?jí)主要參數(shù)呢?我們應(yīng)該測(cè)算參加練習(xí)主要參數(shù)相較于損害函數(shù)的導(dǎo)數(shù),接著求得梯度方向,接著應(yīng)用梯度下降法來升級(jí)主要參數(shù),迭代更新這一過程,都可以找到1個(gè)最好解決方案來降到最低交叉熵。


  我們都知道反向傳播關(guān)鍵是用來清算交叉熵相較于權(quán)重值和參考點(diǎn)的導(dǎo)函數(shù)


  或許已經(jīng)聽見或讀到了,一些關(guān)于在互聯(lián)網(wǎng)根據(jù)反向傳播來傳送誤差的信息內(nèi)容。再根據(jù)神經(jīng)細(xì)胞的w和b對(duì)誤差成就的尺寸。其實(shí)就是將誤差安排到每個(gè)神經(jīng)細(xì)胞上。但是這里的誤差(error)是什么意思呀?這一誤差的準(zhǔn)確的界定到底是什么呢?答案就是這種誤差是通過每層神經(jīng)元網(wǎng)絡(luò)所成就的,并且某一層樓誤差是后續(xù)層誤差前提下平攤的,網(wǎng)絡(luò)里第層誤差用以表明。


  反向傳播都是基于4個(gè)基本方程的,通過這個(gè)方程式來數(shù)據(jù)誤差和交叉熵,這兒把這4個(gè)方程式一一列舉


  對(duì)于如何講解這一4個(gè)方程式,接著想要1期共享來闡述。


  classNeuralNetwork(object):
  def__init__(self):
  pass
  defforward(self,x):
  #回到前向傳播的Z可能就是w和b特征函數(shù),鍵入激活函數(shù)前的值
  #回到激活函數(shù)傷害值A(chǔ)
  #z_s,a_s
  pass
  defbackward(self,y,z_s,a_s):
  #回到前向傳播中學(xué)到參數(shù)導(dǎo)函數(shù)dwdb
  pass
  deftrain(self,x,y,batch_size=10,epochs=100,lr=0.001):
  pass

02.png

  我們是神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)全過程,其實(shí)就是練習(xí)全過程。主要分兩階段前向傳播和后向傳播


  在前向傳播函數(shù)中,關(guān)鍵測(cè)算傳遞的Z和A,有關(guān)Z和A指的是什么請(qǐng)參閱前邊報(bào)表


  在反向傳播中測(cè)算可學(xué)習(xí)培訓(xùn)自變量w和b的導(dǎo)函數(shù)


  def__init__(self,layers=[2,10,1],activations=['sigmoid','sigmoid']):
  assert(len(layers)==len(activations)+1)
  self.layers=layers
  self.activations=activations
  self.weights=[]
  self.biases=[]
  foriinrange(len(layers)-1):
  self.weights.append(np.random.randn(layers[i+1],layers))
  self.biases.append(np.random.randn(layers[i+1],1))


  layers主要參數(shù)用以特定每層神經(jīng)細(xì)胞的數(shù)量


  activations為每層特定激活函數(shù),其實(shí)就是


  來簡(jiǎn)易解悉一下下編碼assert(len(layers)==len(activations)+1)


  foriinrange(len(layers)-1):
  self.weights.append(np.random.randn(layers[i+1],layers))
  self.biases.append(np.random.randn(layers[i+1],1))
  因?yàn)闄?quán)重值連接每個(gè)層神經(jīng)細(xì)胞的w和b,可能就兩兩層之間的方程式,上面編碼是對(duì)
  前向傳播
  deffeedforward(self,x):
  #回到前向傳播的值
  a=np.copy(x)
  z_s=[]
  a_s=[a]
  foriinrange(len(self.weights)):
  activation_function=self.getActivationFunction(self.activations)
  z_s.append(self.weights.dot(a)+self.biases)
  a=activation_function(z_s[-1])
  a_s.append(a)
  return(z_s,a_s)

03.png

  這里激活函數(shù),這個(gè)函數(shù)返回值是一個(gè)函數(shù),在python用lambda來返回一個(gè)函數(shù),這里簡(jiǎn)答留下一個(gè)伏筆,隨后會(huì)對(duì)其進(jìn)行修改。


  staticmethod
  def getActivationFunction(name):
  if(name=='sigmoid'):
  return lambda x:np.exp(x)/(1+np.exp(x))
  elif(name=='linear'):
  return lambda x:x
  elif(name=='relu'):
  def relu(x):
  y=np.copy(x)
  y[y<0]=0
  return y
  return relu
  else:
  print('Unknown activation function.linear is used')
  return lambda x:x
  [staticmethod]
  def getDerivitiveActivationFunction(name):
  if(name=='sigmoid'):
  sig=lambda x:np.exp(x)/(1+np.exp(x))
  return lambda x:sig(x)*(1-sig(x))
  elif(name=='linear'):
  return lambda x:1
  elif(name=='relu'):
  def relu_diff(x):
  y=np.copy(x)
  y[y>=0]=1
  y[y<0]=0
  return y
  return relu_diff
  else:
  print('Unknown activation function.linear is used')
  return lambda x:1

04.png

  反向傳播


  這是本次分享重點(diǎn)


  def backpropagation(self,y,z_s,a_s):
  dw=[]#dC/dW
  db=[]#dC/dB
  deltas=[None]*len(self.weights)#delta=dC/dZ計(jì)算每一層的誤差
  #最后一層誤差
  deltas[-1]=((y-a_s[-1])*(self.getDerivitiveActivationFunction(self.activations[-1]))(z_s[-1]))
  #反向傳播
  for i in reversed(range(len(deltas)-1)):
  deltas<i>=self.weights[i+1].T.dot(deltas[i+1])*(self.getDerivitiveActivationFunction(self.activations<i>)(z_s<i>))
  #a=[print(d.shape)for d in deltas]
  batch_size=y.shape[1]
  db=[d.dot(np.ones((batch_size,1)))/float(batch_size)for d in deltas]
  dw=[d.dot(a_s<i>.T)/float(batch_size)for i,d in enumerate(deltas)]
  #返回權(quán)重(weight)矩陣and偏置向量(biases)
  return dw,db


  綜上所述,這篇文章就給大家介紹到這里了,希望可以給大家?guī)硪欢ǖ膸椭?/p>

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/128844.html

相關(guān)文章

  • 【DL-CV】卷積神經(jīng)網(wǎng)絡(luò)

    摘要:神經(jīng)網(wǎng)絡(luò)的補(bǔ)充前篇后篇數(shù)據(jù)預(yù)處理權(quán)重初始化經(jīng)典神經(jīng)網(wǎng)絡(luò)搞明白后,我們接下來看看他的變種,也是本系列的主角卷積神經(jīng)網(wǎng)絡(luò)。卷積神經(jīng)網(wǎng)絡(luò)一個(gè)普通的卷積神經(jīng)網(wǎng)絡(luò)由各種層按順序堆疊而成,這些層主要分三類卷積層池化層和全連接層。 【DL-CV】神經(jīng)網(wǎng)絡(luò)的補(bǔ)充【DL-CV】數(shù)據(jù)預(yù)處理&權(quán)重初始化 經(jīng)典神經(jīng)網(wǎng)絡(luò)搞明白后,我們接下來看看他的變種,也是本系列的主角——卷積神經(jīng)網(wǎng)絡(luò)(Convolution...

    freewolf 評(píng)論0 收藏0
  • 【DL-CV】卷積神經(jīng)網(wǎng)絡(luò)

    摘要:神經(jīng)網(wǎng)絡(luò)的補(bǔ)充前篇后篇數(shù)據(jù)預(yù)處理權(quán)重初始化經(jīng)典神經(jīng)網(wǎng)絡(luò)搞明白后,我們接下來看看他的變種,也是本系列的主角卷積神經(jīng)網(wǎng)絡(luò)。卷積神經(jīng)網(wǎng)絡(luò)一個(gè)普通的卷積神經(jīng)網(wǎng)絡(luò)由各種層按順序堆疊而成,這些層主要分三類卷積層池化層和全連接層。 【DL-CV】神經(jīng)網(wǎng)絡(luò)的補(bǔ)充【DL-CV】數(shù)據(jù)預(yù)處理&權(quán)重初始化 經(jīng)典神經(jīng)網(wǎng)絡(luò)搞明白后,我們接下來看看他的變種,也是本系列的主角——卷積神經(jīng)網(wǎng)絡(luò)(Convolution...

    ls0609 評(píng)論0 收藏0
  • 徒手實(shí)現(xiàn)CNN:綜述論文詳解卷積網(wǎng)絡(luò)的數(shù)學(xué)本質(zhì)

    摘要:本論文將嘗試概述卷積網(wǎng)絡(luò)的架構(gòu),并解釋包含激活函數(shù)損失函數(shù)前向傳播和反向傳播的數(shù)學(xué)推導(dǎo)。本文試圖只考慮帶有梯度下降優(yōu)化的典型卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)的制定。 近日南洋理工大學(xué)研究者發(fā)布了一篇描述卷積網(wǎng)絡(luò)數(shù)學(xué)原理的論文,該論文從數(shù)學(xué)的角度闡述整個(gè)卷積網(wǎng)絡(luò)的運(yùn)算與傳播過程。該論文對(duì)理解卷積網(wǎng)絡(luò)的數(shù)學(xué)本質(zhì)非常有幫助,有助于讀者「徒手」(不使用卷積API)實(shí)現(xiàn)卷積網(wǎng)絡(luò)。論文地址:https://arxiv....

    eternalshallow 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<